Windows下CMake项目引入DarkHelp静态链接时提示找不到darknet.exe
问题分析与解决步骤
1. 确认DarkHelp的编译模式
你编译DarkHelp时,是否选择了静态编译Darknet?如果DarkHelp是动态链接Darknet编译的,即便你把DarkHelp的.lib静态链接到自身项目,运行时仍会依赖Darknet相关文件(包括darknet.exe或darknet.dll)。
- 重新编译DarkHelp时,在CMake配置中开启
DARKHELP_STATIC和DARKNET_STATIC选项,确保DarkHelp静态链接Darknet,生成完全静态的库文件。
2. 修正自身项目的CMake配置
你的find_library仅找到了DarkHelp的.lib,但静态链接需要同时关联Darknet的静态库(以及OpenCV、CUDA等依赖库)。
- 修改CMakeLists.txt,补充Darknet静态库的链接逻辑:
# 定位DarkHelp静态库 find_library(DARKHELP NAMES darkhelp HINTS "libs/darkhelp/lib") # 定位Darknet静态库(根据你的Darknet编译路径调整HINTS参数) find_library(DARKNET NAMES darknet HINTS "libs/darknet/lib") # 链接目标项目时,同时加入DarkHelp、Darknet及其他依赖库 target_link_libraries(你的项目名称 PRIVATE ${DARKHELP} ${DARKNET} opencv_world ...)
3. 补充运行时依赖文件
如果DarkHelp编译时保留了对darknet.exe的依赖(比如部分初始化逻辑会调用该可执行文件),需将darknet.exe复制到你项目的可执行文件同目录下,或添加到系统PATH环境变量中。
4. 启用DarkHelp的无exe依赖选项
查看DarkHelp的CMake配置,确认DARKHELP_NO_DARKNET_EXECUTABLE选项是否开启,该选项可禁用对darknet.exe的依赖,让DarkHelp直接通过库调用Darknet核心功能。
内容的提问来源于stack exchange,提问作者Scott Izidore
相关产品推荐
相关产品推荐

