4

テストC++OpenGL / SDLプロジェクトを使用してWafという名前のビルドシステムをセットアップしようとしていますが、リンクプロセスでいくつかの問題が発生しています。私の知る限り、すべてのライブラリが正しく検出され、リンクコマンドに追加されていますが、リンクプロセスは、ライブラリがリンクされていないかのように機能しているようです。

プロセスのデバッグを試みるために、MSVCでどのように機能するかを正確に理解するために、コンパイル/リンクプロセスを手動で実行しようとしましたが、まだ問題が発生しています。次のLINK.exeコマンドを実行すると:

PS C:\Users\covertcj\Documents\projects\test> & "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\amd64\LINK.exe"
/NOLOGO /MANIFEST /SUBSYSTEM:CONSOLE /MACHINE:x64 /VERBOSE
.\build\src\main.cpp.1.o 
/OUT:.\build\test.exe
/LIBPATH:C:\Users\covertcj\Documents\projects\test\lib /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib" /LIBPATH:"C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64" 
opengl32.lib sdl.lib sdlmain.lib

通常と同じエラーが発生します。

main.cpp.1.o : error LNK2019: unresolved external symbol SDL_CreateWindow referenced in function SDL_main
main.cpp.1.o : error LNK2019: unresolved external symbol SDL_DestroyWindow referenced in function SDL_main
main.cpp.1.o : error LNK2019: unresolved external symbol SDL_GL_CreateContext referenced in function SDL_main
main.cpp.1.o : error LNK2019: unresolved external symbol SDL_GL_SwapWindow referenced in function SDL_main
main.cpp.1.o : error LNK2019: unresolved external symbol SDL_GL_DeleteContext referenced in function SDL_main
main.cpp.1.o : error LNK2019: unresolved external symbol SDL_PollEvent referenced in function SDL_main
main.cpp.1.o : error LNK2019: unresolved external symbol SDL_Delay referenced in function SDL_main
main.cpp.1.o : error LNK2019: unresolved external symbol SDL_Init referenced in function SDL_main
main.cpp.1.o : error LNK2019: unresolved external symbol SDL_Quit referenced in function SDL_main
LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup

ただし、興味深い詳細な出力もあります。

Searching libraries
    Searching C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64\opengl32.lib:
    Searching C:\Users\covertcj\Documents\projects\dungeonhg\lib\sdl.lib:
    Searching C:\Users\covertcj\Documents\projects\dungeonhg\lib\sdlmain.lib:
    Searching C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64\LIBCMT.lib:
      Found _load_config_used
        Loaded LIBCMT.lib(loadcfg.obj)
    Searching C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64\OLDNAMES.lib:
    Searching C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64\kernel32.lib:

Finished searching libraries

Unused libraries:
  C:\Users\covertcj\Documents\projects\dungeonhg\lib\sdl.lib
  C:\Users\covertcj\Documents\projects\dungeonhg\lib\sdlmain.lib
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64\OLDNAMES.lib

ただし、私のコードは間違いなくSDLとSDLmainを使用しています。

main.cpp

#include <SDL2/SDL.h>
#include <SDL2/SDL_opengl.h>

int main(int argc, char *argv[]) {

  SDL_Init(SDL_INIT_VIDEO); // Init SDL2

  // Create a window. Window mode MUST include SDL_WINDOW_OPENGL for use with OpenGL.
  SDL_Window *window = SDL_CreateWindow(
    "SDL2/OpenGL Demo", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE
  );

...

誰かが私がここで間違っていることを知っていますか?

編集:同じwafスクリプトがLinuxとOSXの両方で機能することも確認したので、Windows固有のようです。

4

1 に答える 1

1

あなたの主な問題は

error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup

これは、他のすべてがヒンジする唯一のエラーである可能性があります。推測する必要がある場合は、「メイン」関数を追加するのを忘れたと想定する必要があります...投稿ではっきりとわかるように、そうではないようです。

于 2012-08-25T22:42:08.800 に答える