gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 04:39:00 27 4
gpt4 key购买 nike

我正在尝试使用 CGO 来使用 realsense2.dll(Intel 的 RealSense 相机库)。我在 Windows 11 x64 上。

当我的目录布局为:

  • rs2测试
    • 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"
*/

但是,当我尝试像这样将包装文件放入它们自己的包中时:

  • rs2测试
    • 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,谷歌说这意味着应用程序未能正确初始化。

我也试过 -L${SRCDIR}/rs2 但它说找不到 -lrealsense2。

最佳答案

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

DLL 必须与可执行文件位于同一文件夹、当前工作目录或 PATH 中才能找到。 Windows 就是这样工作的。有关详细信息,请参阅 DLL search order .

关于go - 为什么我不能使用 CGO 链接到包文件夹中的这个 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70492538/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com