可能重复:
使用 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;
}