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

Why can't I link to this DLL in a package folder using CGO?

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

当我的目录布局为:

时,我的计算连接设备数量的测试程序有效

在 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"
*/

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

并将指令更改为:

#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。

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

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