使用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)
...无济于事。
我想念什么?
答案 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>