在运行时链接外部库
Posted
技术标签:
【中文标题】在运行时链接外部库【英文标题】:Linking external library in runtime 【发布时间】:2017-08-22 23:05:51 【问题描述】:我正在尝试编译使用 FMOD 和 CMake 的简单程序。编译似乎没问题,但我的应用程序因0xC0000135
而崩溃,这是 STATUS_DLL_NOT_FOUND
我的 CMakeList.txt
cmake_minimum_required(VERSION 3.7)
project(fmod-test)
set(FMOD_DIR "D:/FMOD SoundSystem/FMOD Studio API Windows")
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(fmod-test $SOURCE_FILES)
include_directories($FMOD_DIR/api/lowlevel/inc $FMOD_DIR/api/studio/inc)
link_directories("$FMOD_DIR/api/lowlevel/lib" "$FMOD_DIR/api/studio/lib")
target_link_libraries(fmod-test
"$FMOD_DIR/api/lowlevel/lib/fmod_vc.lib"
"$FMOD_DIR/api/studio/lib/fmodstudio_vc.lib")
这是我的 cmake 配置或环境的问题吗? 我应该将 DDL 放在某个特定的位置还是在 CMakeLists.txt 旁边的某个地方提供指向它们的路径?
【问题讨论】:
不是 windows 的人,但作为第一次尝试,尝试将 dll 放在可执行文件旁边,如果我没记错的话,这是 windows 看起来的第一个位置。我不确定如何设置 dll 的其他搜索路径 如果 exe 位于不同的位置,还可以更新 'path' 环境变量以包含 dll 的路径 - 但您要跟踪,尽量避免 dll hell 感谢 krv,帮了大忙 【参考方案1】:通过将api/lowlevel/lib
和api/studio/lib
添加到PATH 变量来解决。
感谢 kvr 的建议。
【讨论】:
以上是关于在运行时链接外部库的主要内容,如果未能解决你的问题,请参考以下文章