链接到自行创建的dll失败

时间:2018-11-03 23:35:12

标签: c++ dll cmake clion mingw-w64

使用CLION,我确实创建了一个非常基本的“ C ++库”,仅包含一个函数。库类型为“共享”。 在Library.h中,只有

void hello();

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

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

编译时,我得到2个文件: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)

...无济于事。

我想念什么?

1 个答案:

答案 0 :(得分:0)

我最终可以通过指定.dll文件的具体位置来链接到.dll文件,如@drescherjm建议的那样。使用命令成功链接到.dll文件

<div id="root"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.4.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.2/umd/react-dom.production.min.js"></script>