如何在 Windows 中将共享库 *dll 与 CMake 链接

Joh*_*yBe 6 c++ cmake clion

我有 2 个文件:library.dll and library.h我在自己的项目中需要一些代码。我正在使用 Clion 在 Windows 上工作,我应该使用 CMake 进行配置。

我试过这种方式:

cmake_minimum_required(VERSION 3.6)
project(test2)

set(CMAKE_CXX_STANDARD 11)
link_directories(C:\\Users\\Johny\\CLionProjects\\test2)

set(SOURCE_FILES main.cpp)
add_executable(test2 ${SOURCE_FILES})

target_link_libraries(test2 library.dll)
Run Code Online (Sandbox Code Playgroud)

它编译但没有工作。退货code -1073741515

我该如何处理?

AKJ*_*AKJ 9

虽然这个问题很老了。您错误地定位了链接库。 target_link_libraries(test2 library.dll)是错的。这是链接 SDL2 的示例。在主 CMakeList.txt

cmake_minimum_required(VERSION 3.12)
project(GraphicTest)

set(CMAKE_CXX_STANDARD 11)

include_directories("${PROJECT_SOURCE_DIR}/SDL")
add_subdirectory(SDL)

add_executable(GraphicTest main.cpp)
target_link_libraries(GraphicTest SDL2)
Run Code Online (Sandbox Code Playgroud)

并在库文件夹中。这里SDL,添加一个CMakeLists.txt

message("-- Linking SDL")
add_library(SDL2 SDL2.dll)
set_target_properties(SDL2 PROPERTIES LINKER_LANGUAGE C)
Run Code Online (Sandbox Code Playgroud)

  • `add_library(SDL2 SDL2.dll)` 行是错误的:它定义了一个应该由 CMake **构建** 的库。对于已构建的库,应使用 IMPORTED 库目标。另外,不可能与“.dll”库文件链接:它应该是“.lib”文件(导入文件)。 (7认同)
  • 对我不起作用。我收到“LINK:致命错误 LNK1104:无法打开文件 'external_dll\Debug\hello.lib'”(使用子目录 external_dll 而不是 SDL,使用 hello 而不是 SDL2)。 (6认同)