我确实使用 CLION 创建了一个非常基本的“C++ 库”,其中仅包含一个函数。库类型为“共享”。 在 Library.h 中只有一个
void hello();
函数声明。 Library.cpp 包含定义
void hello(){std::cout << "hello";}
当我编译它时,我得到 2 个文件:libLibrary.dll 和 libLibrary.dll.a。
我的问题来了。当我创建一个名为 Test(可执行文件)的新项目时,我可以毫无问题地包含 Library.h 文件。但由于“对 `hello()' 的 undefined reference ”,它不会编译,这并不奇怪,因为我没有链接到创建的 DLL 文件。我将“target_link_libraries”添加到 CMakeLists.txt 并将两个 DLL 文件复制到要构建可执行文件的同一目录。
CMakeLists 文件如下所示:
cmake_minimum_required(VERSION 3.12)
project(Test)
set(CMAKE_CXX_STANDARD 17)
add_executable(Test main.cpp)
target_link_libraries(Test Library)
它总是相同的错误消息:
C:/PROGRA~2/MINGW-~1/bin/../lib/gcc/i686-w64-mingw32/8.1.0/../../../../i686/w64-mingw32/bin/ld.exe: cannot find -lLibrary
我也试过
target_link_libraries(Test libLibrary)
target_link_libraries(Test -libLibrary)
target_link_libraries(Test -Library)
target_link_libraries(Test libLibrary.dll)
target_link_libraries(Test Library.dll)
target_link_libraries(Test -libLibrary.dll)
...无济于事。
我错过了什么?
最佳答案
我最终可以通过指定 .dll 文件的具体位置来链接到 .dll 文件,正如@drescherjm 所建议的那样。这里使用命令成功链接到 .dll 文件
target_link_libraries(Test ${CMAKE_BINARY_DIR}/libLibrary.dll)
关于c++ - 链接到自己创建的 dll 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53136464/