2013-07-16 58 views
0

我来second Ogre tutorial上食人魔维基,重命名的文件通过教程的提示和更换的代码,但我得到这个错误:食人魔3D错误 - LNK1120:1周无法解析的外部

1>------ Build started: Project: Flight Simulator, Configuration: Debug Win32 ------ 
    1>BaseApplication.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to  '/INCREMENTAL:NO' specification 
    1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function ___tmainCRTStartup 
    1>C:\Users\Jura\Documents\Visual Studio 2010\Projects\Flight Simulator\Debug\Flight Simulator.exe : fatal error LNK1120: 1 unresolved externals 
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

我已经一派,但我似乎没有找到答案。

这是BasicTutorial2.cpp代码:

#include "BasicTutorial2.h" 

//------------------------------------------------------------------------------------- 
BasicTutorial2::BasicTutorial2(void) 
{ 
} 


//------------------------------------------------------------------------------------- 
BasicTutorial2::~BasicTutorial2(void) 
{ 
} 

//------------------------------------------------------------------------------------- 
void BasicTutorial2::createCamera(void) 
{ 
} 

//------------------------------------------------------------------------------------- 
void BasicTutorial2::createViewports(void) 
{ 
} 

//------------------------------------------------------------------------------------- 
void BasicTutorial2::createScene(void) 
{ 
} 

这是我BasicTutorial2.h文件:

/* 
----------------------------------------------------------------------------- 
Filename: BasicTutorial2.h 
----------------------------------------------------------------------------- 

This source file is part of the 
    ___     __ __ _ _ _ 
    /___\__ _ _ __ ___// /\ \ (_) | _(_) 
// // _` | '__/ _ \ \ \/ \//| |//| 
/\_// (_| | | | __/ \ /\ /| | <| | 
\___/ \__, |_| \___| \/ \/ |_|_|\_\_| 
     |___/        
     Tutorial Framework 
     http://www.ogre3d.org/tikiwiki/ 
----------------------------------------------------------------------------- 
*/ 
#ifndef __BasicTutorial2_h_ 
#define __BasicTutorial2_h_ 

#include "BaseApplication.h" 

class BasicTutorial2 : public BaseApplication 
{ 
public: 
    BasicTutorial2(void); 
    virtual ~BasicTutorial2(void); 

protected: 
    virtual void createScene(void); 
    virtual void createCamera(void); 
    virtual void createViewports(void); 
}; 

#endif // #ifndef __BasicTutorial2_h_ 

在目录中,我也有BaseApplication.cppstdafx.cpp,当然他们的头文件(BaseApplication.hstdafx.h)。

所以,这是我的目录结构:

Header files 
    stdafx.h; 
    BaseApplication.h; 
    BasicTutorial2.h; 

Source files 
    stdafx.cpp; 
    BaseApplication.cpp; 
    BasicTutorial2.cpp; 

我希望有人可以给我的解决方案。我尝试将子系统从“Windows”更改为“控制台”,但没有运气。我也试过其他解决方案,但也没有运气。

+2

你的(赢)主要功能在哪里? – PlasmaHH

回答

0

答:我忘了主(WIN)功能添加到BasicTutorial2.cpp:

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
#define WIN32_LEAN_AND_MEAN 
#include "windows.h" 
#endif 

#ifdef __cplusplus 
extern "C" { 
#endif 

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
    INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT) 
#else 
    int main(int argc, char *argv[]) 
#endif 
    { 
     // Create application object 
     BasicTutorial2 app; 

     try { 
      app.go(); 
     } catch(Ogre::Exception& e) { 
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
      MessageBox(NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL); 
#else 
      std::cerr << "An exception has occured: " << 
       e.getFullDescription().c_str() << std::endl; 
#endif 
     } 

     return 0; 
    } 

#ifdef __cplusplus 
} 
#endif 

所以,BasicTutorial2.cpp看起来这到底:

#include "BasicTutorial2.h" 

//------------------------------------------------------------------------------------- 
BasicTutorial2::BasicTutorial2(void) 
{ 
} 


//------------------------------------------------------------------------------------- 
BasicTutorial2::~BasicTutorial2(void) 
{ 
} 

//------------------------------------------------------------------------------------- 
void BasicTutorial2::createCamera(void) 
{ 
} 

//------------------------------------------------------------------------------------- 
void BasicTutorial2::createViewports(void) 
{ 
} 

//------------------------------------------------------------------------------------- 
void BasicTutorial2::createScene(void) 
{ 
} 

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
#define WIN32_LEAN_AND_MEAN 
#include "windows.h" 
#endif 

#ifdef __cplusplus 
extern "C" { 
#endif 

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
    INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT) 
#else 
    int main(int argc, char *argv[]) 
#endif 
    { 
     // Create application object 
     BasicTutorial2 app; 

     try { 
      app.go(); 
     } catch(Ogre::Exception& e) { 
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
      MessageBox(NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL); 
#else 
      std::cerr << "An exception has occured: " << 
       e.getFullDescription().c_str() << std::endl; 
#endif 
     } 

     return 0; 
    } 

#ifdef __cplusplus 
} 
#endif 

所以,对于其他教程,只需相应地更改名称即可。搜索BasicTutorial2并将其替换为与BasicTutorial3和重命名文件,永远不会删除main()函数,因为它会导致很多不必要的麻烦。

相关问题