为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能使用 CGO 链接到包文件夹中的这个 DLL?

为什么我不能使用 CGO 链接到包文件夹中的这个 DLL?

Go
鸿蒙传说 2022-10-24 09:02:25
我正在尝试使用 CGO 来使用 realsense2.dll(英特尔的 RealSense 相机库)。我在 Windows 11 x64 上。当我的目录布局为:rs2test去.modrealsense2.dllcontext.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"*/但是,当我尝试将包装文件放入自己的包中时,如下所示:rs2testrs2/context.gors2/devicelist.gors2/error.gors2/realsense2.dll去.modmain.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 谷歌说这意味着应用程序未能正确初始化。我也试过 -L${SRCDIR}/rs2 但它说 -lrealsense2 没有找到。
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

不仅在构建应用程序时需要 DLL,而且在运行应用程序时(也是最重要的)也需要 DLL。

DLL 必须与可执行文件位于同一文件夹、当前工作目录或在 PATH 中才能被找到。这就是 Windows 的工作方式。有关详细信息,请参阅DLL 搜索顺序


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号