неразрешенный внешний символ _main, указанный в функции "int __cdecl invoke_main (void)" - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь использовать GLFW с cmake для Windows.

Я скачал .lib файлы для 32-битной версии из здесь и связал их. Я также связал 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)" 

Это означает, что существует объявление, но не определениеточки входа, верно? . Но я уверен, что определил точку входа в main.cpp ... также я использую подпись из официальной документации , поэтому она должна быть правильной.

Я мог нормально скомпилировать и запустить программу вчера. Разница, я думаю, заключалась в том, что я запутался в расположении glfw.dll, но не могу вспомнить, куда я положил его для работы программы ...

Любая помощь оценивается.

...