web-dev-qa-db-ja.com

エラーLNK2019:未解決の外部シンボル_mainが関数___tmainCRTStartupで参照されていますが、今回はWindows /コンソールの問題ではありません!

だから、悪名高いエラーが戻ってきました。プロジェクトは、main()メソッドを見つけることができないと文句を言っています(それがエラーの意味です)。

しかし、私にはメインがあり、私のプロジェクトはコンソールプロジェクトです。以前は機能していたので、そうではありません。

また、プロジェクトにはクラスとファイルが多すぎてすべてを投稿できないので、必要に応じて必要なクラスを投稿します。

これは、Visual Studio 2010のC++、OpenGL、SDLゲームです。突然、不可解にこのリンカーエラーが表示される前に正常に機能していたため、ライブラリの問題ではありません。

編集:main()メソッド:

int main(int argc, char **argv)
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_ALPHA);
 glutCreateWindow("Game");

 glEnable(GL_DEPTH_TEST);
 glEnable(GL_NORMALIZE);
 glEnable(GL_COLOR_MATERIAL);
 glEnable(GL_BLEND);
 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

 g = Game();
 glutInitWindowSize(g.getScreenWidth(), g.getScreenHeight());
 //glutPositionWindow(1280, 50);

 // Callbacks
 glutDisplayFunc(handleRedraw);
 glutReshapeFunc(handleResize);
 glutMouseFunc(handleMouseClicks);
 glutPassiveMotionFunc(handleMouseOvers);
 glutKeyboardFunc(handleKeyboardEvents);
 glutTimerFunc(50, moveItemToInventory, 0);

 glutMainLoop();

 return 0;
}
20
OddCore

SDL_main.hはSDL.hから自動的にインクルードされるため、常に厄介な#defineを取得します。

書くだけ:

#include <SDL.h>
#undef main

そしてそれはうまくいくはずです

52
rodrigo

別のオプションは、通常のパラメーターで独自のメインを実際に定義することです

int main(int argc, char *args[])
{
    // Your code here
}

これでエラーが解消されます。

次に、これらのパラメーターを使用せず、コンパイラの警告も削除したい場合は、メイン関数でそのトリックを実行できます。

(void)argc;
(void)args;
26
ForceMagic

犯人はSDL_main.h。そのファイルが含まれていないことを確認してください。そこには厄介な定義があります。

#define main SDL_main
3
tibur
#define SDL_MAIN_HANDLED
#include "SDL.h"

https://wiki.libsdl.org/SDL_SetMainReady

3
jens