链接到自行创建的dll失败

linking to self created dll fails

本文关键字:dll 失败 创建 链接      更新时间:2023-10-16

使用CLION,我确实创建了一个非常基本的"C++库",只包含一个函数。库类型为"共享"。图书馆里只有一个

void hello();

函数声明。Library.cpp包含的定义

void hello(){std::cout << "hello";}

当我编译它时,我得到了两个文件:libLibrary.dll和libLibrary.dll.a

我的问题来了。当我创建一个名为Test的新项目(一个可执行文件(时,我可以毫无问题地包含Library.h文件。但它不会编译,因为"对‘hello((’的未定义引用",这并不奇怪,因为我没有链接到创建的DLL文件。我在CMakeLists.txt中添加了"target_link_libraries",并将两个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)