简体   繁体   English

Irrlicht中未解决的外部因素

[英]Unresolved Externals in Irrlicht

I am currently coding in Visual Studio 2010, using C++ and the Irrlicht game engine. 我目前正在使用C ++和Irrlicht游戏引擎在Visual Studio 2010中进行编码。 I have tried asking this question on their forum, however I haven't had any response. 我试图在他们的论坛上问这个问题,但是我没有任何回应。

I am using the tutorials on the Irrlicht website: http://irrlicht.sourceforge.net/docu/example002.html 我正在使用Irrlicht网站上的教程: http : //irrlicht.sourceforge.net/docu/example002.html

The error I am getting is: "unresolved external symbol _ imp _createDevice referenced in function _main" 我得到的错误是:“函数_main中引用的未解析的外部符号_ imp _createDevice”

I have added linked the Irrlicht library and include files already, but I am still getting this error. 我已经添加了链接的Irrlicht库,并且已经包含文件,但是仍然出现此错误。

// Tutorial2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <irrlicht.h>
#include <iostream>

using namespace irr;

#ifdef _MSC_VER
#pragma comment(lib, "Irrlicht.lib")
#endif


int main()
{
// ask user for driver

video::E_DRIVER_TYPE driverType;

printf("Please select the driver you want for this example:\n"\
    " (a) OpenGL 1.5\n (b) Direct3D 9.0c\n (c) Direct3D 8.1\n"\
    " (d) Burning's Software Renderer\n (e) Software Renderer\n"\
    " (f) NullDevice\n (otherKey) exit\n\n");

char i;
std::cin >> i;

switch(i)
{
    case 'a':driverType = video::EDT_OPENGL;    break;
    case 'b':driverType = video::EDT_DIRECT3D9; break;
    case 'c':driverType = video::EDT_DIRECT3D8; break;
    case 'd':driverType = video::EDT_BURNINGSVIDEO; break;
    case 'e':driverType = video::EDT_SOFTWARE;  break;
    case 'f':driverType = video::EDT_NULL;      break;
    default: return 1;
}

// create device and exit if creation failed

IrrlichtDevice *device = 
    createDevice(driverType, core::dimension2d<u32>(640, 480));

if (device == 0)
    return 1; // could not create selected driver.

video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();

device->getFileSystem()->addFileArchive("../../media/map-20kdm2.pk3");

scene::IAnimatedMesh* mesh = smgr->getMesh("20kdm2.bsp");
scene::ISceneNode* node = 0;

if (mesh)
    node = smgr->addOctreeSceneNode(mesh->getMesh(0), 0, -1, 1024);
//      node = smgr->addmeshSceneNode(mesh->getMesh(0));

if (node)
    node->setPosition(core::vector3df(-1300,-144,-1249));

smgr->addCameraSceneNodeFPS();

device->getCursorControl()->setVisible(false);

int lastFPS = -1;

while(device->run())
{
    if(device->isWindowActive())
    {
        driver->beginScene(true, true, video::SColor(255, 200, 200, 200));
        smgr->drawAll();
        driver->endScene();

        int fps = driver->getFPS();

        if (lastFPS != fps)
        {
            core::stringw str = L"Irrlicht Engine - Quake 3 Map example[";

            str += driver->getName();
            str += "] FPS:";
            str += fps;

            device->setWindowCaption(str.c_str());
            lastFPS = fps;
        }
    }
    else
        device->yield();
}

device->drop();
return 0;
}

I've managed to build the sample, no problem. 我已经成功建立了样本,没问题。

The only way to get your error is to mix the 32 and 64bit lib files. 导致错误的唯一方法是混合使用32位和64位lib文件。

Rename the 64bit library Irrlicht_x64.lib and try building again. 重命名64位库Irrlicht_x64.lib然后尝试再次构建。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM