伊利希特中未解决的外部问题

Unresolved Externals in Irrlicht

本文关键字:外部 问题 未解决      更新时间:2023-10-16

我目前正在Visual Studio 2010中编码,使用C++和Irrlicht游戏引擎。我尝试在他们的论坛上提出这个问题,但我没有得到任何回应。

我正在使用Irrlicht网站上的教程:http://irrlicht.sourceforge.net/docu/example002.html

我得到的错误是:"函数_main中引用的未解析的外部符号 _imp_createDevice"

我已经添加了链接的 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.5n (b) Direct3D 9.0cn (c) Direct3D 8.1n"
    " (d) Burning's Software Renderern (e) Software Renderern"
    " (f) NullDevicen (otherKey) exitnn");
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;
}

我已经设法构建了示例,没问题。

获得错误的唯一方法是混合 32 位和 64 位 lib 文件。

重命名 64 位库Irrlicht_x64.lib,然后再次尝试构建。