1

重複の可能性:
int main(void) でのコンパイルが失敗します。main(int argc, char *argv[]) は成功します。なんで?

OpenGL と SDL を使用して簡単なゲーム エンジンを作成しています。SDL と OpenGL のすべての初期化コードは dll にあります。次に、アプリケーションは単純に関数を呼び出してすべてを初期化します。dll はコンパイルされ、問題はありませんでしたが、dll を参照するアプリケーションをコンパイルしようとすると、動作しません。「WinMain@16」への未定義参照があると表示されます。これは、最初はwin32アプリとして設定されていたためだと思っていたので、コンソールアプリに切り替える必要がありました。

それはすでにコンソールアプリにあったことがわかりました。では、なぜこのエラーが発生するのでしょうか? アプリケーションのコードは次のとおりです。

#include "GameManager.h"

int main()

{

GameManager gameManager;

gameManager.EngineStartUp(480, 640);

return 0;

}

dll のコードは次のとおりです。

#include "GameManager.h"
#include <iostream>
#include "SDL/SDL.h"
#include "gl/gl.h"
#include "gl/glu.h"

GameManager::GameManager()
{
    //ctor

}

GameManager::~GameManager()
{
    //dtor
}

//Initializes OpenGL and SDL
bool GameManager::EngineStartUp(int WindowHeight, int WindowWidth)
{
   if(SDL_Init(SDL_INIT_EVERYTHING) < 0) {
        return false;
   }
   if((Surf_Display = SDL_SetVideoMode(WindowWidth, WindowHeight, 32, SDL_HWSURFACE | SDL_GL_DOUBLEBUFFER | SDL_OPENGL)) = NULL){
        return false;
   }

   glClearColor(0.415f, 0.432f, 1.0f, 1);
   glClearDepth(1.0f);

   glViewport(0, 0, WindowWidth, WindowHeight);

   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();

   glOrtho(0, WindowWidth, WindowHeight, 0, 1, -1);

   glMatrixMode(GL_MODELVIEW);

   glEnable(GL_TEXTURE_2D);

   glLoadIdentity();

   return true;
}
4

0 に答える 0