在控制台应用程序上未定义的对“WinMain @ 16”的引用

时间:2012-07-01 12:42:46

标签: c++ winapi opengl sdl codeblocks

  

可能重复:
  Compiling with int main(void) fails; main(int argc, char *argv[]) succeeds. Why?

我正在使用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;
}

0 个答案:

没有答案