【发布时间】:2022-01-26 05:52:32
【问题描述】:
我正在尝试使用 CGO 来使用 realsense2.dll(英特尔的 RealSense 相机库)。我在 Windows 11 x64 上。
当我的目录布局为:
- rs2test
- go.mod
- realsense2.dll
- context.go(C 代码的包装器)
- devicelist.go(C 代码的包装器)
- error.go(C 代码的包装器)
- main.go
在 C 代码文件的每个包装器中,我都有以下指令:
/*
#cgo CFLAGS: -I../../../include/librealsense2
#cgo LDFLAGS: -L${SRCDIR} -lrealsense2
#include "../../../include/librealsense2/rs.h"
#include "../../../include/librealsense2/h/rs_context.h"
#include "../../../include/librealsense2/h/rs_pipeline.h"
#include "../../../include/librealsense2/h/rs_option.h"
#include "../../../include/librealsense2/h/rs_frame.h"
*/
但是,当我尝试像这样将包装文件放入自己的包中时:
- rs2test
- rs2/context.go
- rs2/devicelist.go
- rs2/error.go
- rs2/realsense2.dll
- go.mod
- main.go
并将指令更改为:
#cgo CFLAGS: -I../../../../include/librealsense2
#cgo LDFLAGS: -L${SRCDIR} -lrealsense2
#include "../../../../include/librealsense2/rs.h"
#include "../../../../include/librealsense2/h/rs_context.h"
#include "../../../../include/librealsense2/h/rs_pipeline.h"
#include "../../../../include/librealsense2/h/rs_option.h"
#include "../../../../include/librealsense2/h/rs_frame.h"
我得到退出状态 0xc0000135,Google 说这意味着应用程序无法正确初始化。
我也试过 -L${SRCDIR}/rs2 但是它说 -lrealsense2 is not found.
【问题讨论】:
标签: go dll linker linker-errors cgo