函数“ int __cdecl invoke_main(void)”中引用的未解析的外部符号_main

时间:2019-10-20 12:46:32

标签: c++ opengl linker static-libraries glfw

我正在尝试在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的位置,但是我不记得我将它放在哪里可以让程序正常工作了。

任何帮助都可以得到。

0 个答案:

没有答案