我正在尝试在Windows上的cmake中使用GLFW。
我已经从here下载了32位版本的.lib文件并进行了链接。 我还链接了OpenGL32.lib(32位版本)。
项目结构:
-aspyre
-external
-include
-GLFW
glfw3.h
glfw3native.h
-lib
-GLFW
glfw3.dll
glfw3.lib
glfw3dll.lib
OpenGL32.lib
-build
..cmake build stuff
main.cpp
CMakeLists.txt:
cmake_minimum_required(VERSION 3.6.2)
project(Aspyre VERSION 1.0.0)
#External includes
set(EXTERNAL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/external/include)
#External libraries
set(EXTERNAL_LIB_DIR ${CMAKE_SOURCE_DIR}/external/lib)
set(GLFW_LIB_DIR ${EXTERNAL_LIB_DIR}/GLFW)
#Putting everything together
add_executable(Aspyre)
target_link_directories(
Aspyre
PUBLIC
${GLFW_LIB_DIR}
)
target_link_libraries(
Aspyre
glfw3
glfw3dll
OpenGL32
)
target_include_directories(
Aspyre
PUBLIC
${EXTERNAL_INCLUDE_DIR}
)
target_sources(
Aspyre
PUBLIC
${CMAKE_SOURCE_DIR}/main.cpp
)
main.cpp:
#include <GLFW/glfw3.h>
int main(void)
{
return 0;
}
生成生成文件后,我尝试编译“ msbuild Aspyre.vcxproj”,此时出现错误:
unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)"
这意味着存在入口点right?的声明,但没有定义。但是我很确定我已经在main.cpp中定义了入口点...我也正在使用official documentation中的签名,所以它应该是正确的。
昨天我可以编译并运行该程序。我认为的区别是我弄乱了glfw.dll的位置,但是我不记得我将它放在哪里可以让程序正常工作了。
任何帮助都可以得到。