我目前正在使用MinGW编译C++程序。我下载了irrlicht-1.8,并正在尝试做第一个教程。它正在查找头文件,但是当我尝试编译时,出现以下错误:
我应该注意,这是一台公用计算机,我在其网络上拥有一个专用帐户。我没有管理员权限。这是我唯一可以访问的Windows计算机。我从哪开始呢?我不知道那个错误是什么意思。我的.c文件甚至不在C驱动器中。它在H盘上。编译时,我在.bat文件中给出以下命令:
如上所述,-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文件。我曾尝试删除杂注注释并切换库目录,但是无论哪种方法都行不通。我的 friend 告诉我,该错误表示编译器找不到所需的文件,但我不知道它是什么文件。我只假定它是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;
}
最佳答案
OP的解决方案。
首先,我要说的是虽然允许编译,但是由于32位/ 64位错误而无法执行,但这是另一个主题。
有两个问题:
-编译器未编译库
-编译器不包含库
对于第一个问题,我必须在编译命令的开头添加-c,以告诉它编译库文件。对于第二个,我必须使用-l并指定要包含的库文件。
对于实用评论,我只是这样做了:
#pragma comment(lib, "libIrrlicht.a")
关于c++ - Minwr库不包含在Irrlicht中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13946041/