首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Irrlicht不包括MinGW库

Irrlicht不包括MinGW库
EN

Stack Overflow用户
提问于 2012-12-19 05:26:49
回答 1查看 1.4K关注 0票数 2

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

C:\Users\E5DC9~1.MAR\AppData\Local\Temp\ccfR3pSv.o:LightSpacePrototype.C<.text+0xb12>:未定义的对“__imp__createDevice”的引用 collect2: ld返回1退出状态

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

H: CD H:\桌面\MinGW\Bin 桌面\MinGW\源代码\LightSpacePrototype.C.C H:\Desktop\MinGW\COMPILED\LightSpacePrototype.exe G++ -L H:\G++\MinGW\irrlicht-1.8\lib\Win32 32-gcc -I H:\G++\MinGW\Irrlicht-1.8\G++ CMD

正如我前面所说,指定要搜索的头文件目录的-I工作得很好。不过,我对库目录感到困惑,因为本教程针对的是VisualC++,而不是MinGW。因此,教程说将路径指定为H:\Desktop\MinGW\irrlicht-1.8\lib\Win32-visualstudio,而不是H:\桌面\MinGW\Irrlicht-1.8\lib\Win32 32-gcc,就像我有它一样。我想我应该用gcc,因为那个种子是MinGW版本。然而,在教程中,它说我需要“#语用注释(lib," Irrlicht.lib ")”,但是在Win32 32-gcc中没有Irrlicht.lib文件,只有另外两个名为libIrrlicht.a和libIrrlicht.def的文件,但是Win32 32-visualstudio文件夹中有一个Irrlicht.lib文件。我尝试过移除语用注释并切换库目录,但这和任何组合都不起作用。我的朋友告诉我,这个错误意味着编译器找不到它需要的文件,但是我不知道那是什么文件。我只假设它是Irrlicht.lib。

源代码:

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

发布于 2017-07-29 10:40:03

来自OP的解决方案。

首先让我说,虽然我所做的允许它编译,但它不会因为32位/64位错误而执行,但这是另一个主题。

有两个问题:

-Compiler没有编译一个库

-Compiler不包括一个图书馆

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

H: CD H:\桌面\MinGW\Bin H:\Desktop\MinGW\COMPILED\LightSpacePrototype.exe H:\Desktop\MinGW\irrlicht-1.8\lib\Win32-gcc\libIrrlicht.a G++ H:\G++\MinGW\MinGW\G++\LightSpacePrototype.C.C -o \MinGW\Irrlicht-1.8\MinGW\irrlicht-1.8\lib\Win32-gcc -L -I H:\G++\MinGW\Irrlicht-1.8\G++ CMD

对于实用主义的评论,我只是这样做的:

代码语言:javascript
复制
#pragma comment(lib, "libIrrlicht.a")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13946041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档