MinrW Library不包含在Irrlicht中

时间:2012-12-19 05:26:49

标签: c++ irrlicht

我目前正在使用MinGW编译C ++程序。我下载了irrlicht-1.8,我正在尝试做第一个教程。它正在查找头文件,但是当我尝试编译时,我收到以下错误:

  

C:\ Users \ E5DC9~1.MAR \ AppData \ Local \ Temp \ ccfR3pSv.o:LightSpacePrototype.C< .text + 0xb12&gt ;:未定义引用'__imp__createDevice'

     

collect2:ld返回1exit状态

我应该注意到这是一台公共计算机,我的网络上有一个私人帐户。我没有管理员权限。这是我唯一可以访问的Windows计算机。我该从哪里开始?我不知道那个错误意味着什么。我的.c文件甚至不在C盘中。它在H盘上。编译时,我在.bat文件中提供以下命令:

  

H:

     

CD H:\ Desktop \ MinGW \ Bin

     

G ++ H:\ Desktop \ MinGW \ SOURCE \ LightSpacePrototype.C -o H:\ Desktop \ MinGW \ COMPILED \ LightSpacePrototype.exe -LH:\ Desktop \ MinGW \ irrlicht-1.8 \ lib \ Win32-gcc -IH: \桌面\ MinGW的\ Irrlicht的-1.8 \包括

     

CMD

-I指定要搜索的头文件目录,如上所述,工作正常。我对库目录很困惑,因为教程是针对Visual C ++而不是MinGW。因此教程说要将路径指定为H:\ Desktop \ MinGW \ irrlicht-1.8 \ lib \ Win32-visualstudio而不是H:\ Desktop \ MinGW \ irrlicht-1.8 \ lib \ Win32-gcc就像我拥有它一样。我假设我应该使用gcc,因为它看起来像是MinGW版本。但是,在教程中它说我需要“#pragma comment(lib,”Irrlicht.lib“)”但是在Win32-gcc中没有Irrlicht.lib文件,只有两个名为libIrrlicht.a和libIrrlicht.def的文件,但是在Win32-visualstudio文件夹中有一个Irrlicht.lib文件。我已经尝试删除pragma注释并切换库目录,但这既不是也没有任何组合。我的朋友告诉我,错误意味着编译器找不到它需要的文件,但我不知道是什么文件。我只假设它是Irrlicht.lib。

源代码:

#include "irrlicht.h"

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

#pragma comment(lib, "Irrlicht.lib")

int main()
{

IrrlichtDevice *device = createDevice(EDT_SOFTWARE, dimension2d<u32>(512, 384), 16, false, false, false, 0);

device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");

IVideoDriver *driver = device->getVideoDriver();
ISceneManager *smgr = device->getSceneManager();
IGUIEnvironment *guienv = device->getGUIEnvironment();

guienv->addStaticText(L"Hello World! This is the Irrlicht Software engine!", rect<s32>(10,10,200,22), true);

IAnimatedMesh *mesh = smgr->getMesh("H:Desktop\MinGW\irrlicht-1.8\media\sydney.md2");
IAnimatedMeshSceneNode *node = smgr->addAnimatedMeshSceneNode(mesh);

if(node)
{

    node->setMaterialFlag(EMF_LIGHTING, false);
    node->setFrameLoop(0, 310);     
    node->setMaterialTexture(0, driver->getTexture("H:Desktop\MinGW\irrlicht-1.8\media\sydney.bmp"));

}

smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));

while(device->run())
{

    driver->beginScene(true, true, SColor(255,100,101,140));
    smgr->drawAll();
    guienv->drawAll();
    driver->endScene();

}

device->drop();

return 0;
}

1 个答案:

答案 0 :(得分:0)

来自OP的

解决方案。

首先我要说的是,虽然我所做的事情允许它编译,但由于某些32位/ 64位错误而无法执行,但这是另一个主题。

有两个问题:

- 编译器没有编译库

- 编译器没有包含库

对于第一个问题,我必须在编译命令的开头添加-c,告诉它编译库文件。对于第二个,我必须使用-l并指定要包含的库文件。

  

H:

     

CD H:\ Desktop \ MinGW \ Bin

     

G ++ -c H:\ Desktop \ MinGW \ SOURCE \ LightSpacePrototype.C -o H:\ Desktop \ MinGW \ COMPILED \ LightSpacePrototype.exe -LH:\ Desktop \ MinGW \ irrlicht-1.8 \ lib \ Win32-gcc - l H:\ Desktop \ MinGW \ irrlicht-1.8 \ lib \ Win32-gcc \ libIrrlicht.a -IH:\ Desktop \ MinGW \ irrlicht-1.8 \ include

     

CMD

对于pragma评论,我刚刚这样做了:

#pragma comment(lib, "libIrrlicht.a")