You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中LoadLibrary加载DLL失败问题排查与解决

Windows下LoadLibrary加载动态库在cmd/PowerShell中失败的解决方法

问题现象

  • 使用以下C++代码加载动态库:
Handle = LoadLibrary(wstring2string(FullLibraryPath).c_str());
  • 代码在CLion终端、Git Bash中运行正常,但在cmd.exe和PowerShell中执行时,LoadLibrary()返回NULL,错误提示:"The specified module could not be found."

无效尝试

最初判断为动态链接依赖问题,尝试在CMakeLists.txt中通过add_definitions添加静态编译参数:

if (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
    add_definitions("--static -lpthread -static-libgcc -static-libstdc++")
endif ()

add_library(io SHARED libio/library.cpp ${SRC_FILES})
add_library(string SHARED libstring/library.cpp ${SRC_FILES})
add_library(array SHARED libarray/library.cpp ${SRC_FILES})
add_library(thread SHARED libthread/library.cpp ${SRC_FILES})
add_library(fs SHARED libfs/library.cpp ${SRC_FILES})
add_library(sys SHARED libsys/library.cpp ${SRC_FILES})

但该配置未能解决问题。

有效解决方案

修改动态库项目的CMakeLists.txt,在所有add_library或add_executable指令之前,添加以下配置设置共享链接器的静态编译标志:

if (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
    set(CMAKE_SHARED_LINKER_FLAGS "-static")
endif ()

内容的提问来源于stack exchange,提问作者Jerry Chou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 08:57:14