Irrlicht 不包含 MinGW 库

Posted

技术标签:

【中文标题】Irrlicht 不包含 MinGW 库【英文标题】:MinGW Library not Included with Irrlicht 【发布时间】:2012-12-19 05:26:49 【问题描述】:

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

C:\Users\E5DC9~1.MAR\AppData\Local\Temp\ccfR3pSv.o:LightSpacePrototype.C<.text>:未定义对“__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 -L H:\Desktop\MinGW\irrlicht-1.8\lib\Win32-gcc -I H: \Desktop\MinGW\irrlicht-1.8\include

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 文件。我曾尝试删除编译指示注释并切换库目录,但无论是这样还是任何组合都不起作用。我的朋友告诉我这个错误意味着编译器找不到它需要的文件,但我不知道那是什么文件。我只假设它是 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;

【问题讨论】:

看起来您正在链接可视化 c++ 文件。无论如何,请提供教程的链接。 只是一个建议...在问题部分中发布您的问题,并将您的解决方案作为答案,然后选择您的答案。那么这不会出现在 SO 的“未回答的问题”中。 【参考方案1】:

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 -L H:\Desktop\MinGW\irrlicht-1.8\lib\Win32-gcc - l H:\Desktop\MinGW\irrlicht-1.8\lib\Win32-gcc\libIrrlicht.a -I H:\Desktop\MinGW\irrlicht-1.8\include

CMD

对于编译指示注释,我只是这样做了:

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

【讨论】:

以上是关于Irrlicht 不包含 MinGW 库的主要内容,如果未能解决你的问题,请参考以下文章

将 Boost 库包含到标准 MinGW 路径中

Irrlicht_0.1源码学习—include/Irrlicht.h

mingw 包含哪些

MinGW-编译器

QT中使用MinGW 编译的protobuf库--包含库的生成和使用

Windows环境下MinGW/gcc安装和环境配置