看起来您正在混合静态和动态链接。您必须选择使用其中任何一个。
当您使用时,target_link_libraries(${PROJECT_NAME} glfwdll)
您正在使用动态链接,即链接到库的 dll 版本。在这种情况下,您应该将 GLFW.dll 文件与构建的可执行文件放在同一文件夹中,以便能够运行该程序。似乎使用库的 dll 版本也需要GLFW_DLL
定义标志。最好在 CMake 中使用add_definitions(-DGLFW_DLL)
而不是将其放入源文件中来定义它。
静态链接更容易处理,只需使用target_link_libraries(${PROJECT_NAME} glfw)
. 您不需要文件GLFWDLL.lib
和GLFW.dll
.
因此,通过动态链接,您CMakeLists.txt
可能如下所示(#define GLFW_DLL
从源文件中删除)。
cmake_minimum_required(VERSION 2.8)
project(test)
aux_source_directory(. SRC_LIST)
include_directories(../../glfw/glfw-2.7.7/include)
link_directories(../../glfw/glfw-2.7.7/lib-msvc110)
add_definitions(-DGLFW_DLL)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} opengl32 glfwdll)
如果您想更改为静态链接,只需将最后三行更改为
#add_definitions(-DGLFW_DLL)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} opengl32 glfw)
希望能帮助到你!上面的所有代码都未经测试:-)