В настоящее время я работаю с 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:
ЧАС:
CD H: \ Рабочий стол \ MinGW \ Bin
G ++ H: \ Рабочий стол \ MinGW \ SOURCE \ LightSpacePrototype.C -o H: \ Рабочий стол \ MinGW \ COMPILED \ LightSpacePrototype.exe -LH: \ Рабочий стол \ 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. Я пытался удалить комментарий прагмы и переключить каталог библиотеки, но ни то, ни другое не работает. Мой друг говорит мне, что ошибка означает, что компилятор не может найти нужный ему файл, но я понятия не имею, что это за файл. Я только предполагаю, что это 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;
}
Решение от ОП.
Позвольте мне сначала сказать, что хотя то, что я сделал, позволяет компилировать его, оно не выполняется из-за какой-то 32-битной / 64-битной ошибки, но это уже другая тема.
Были две проблемы:
-Компилятор не собирал библиотеку
-Компилятор не включал библиотеку
Для первой проблемы мне пришлось добавить -c к началу команды компиляции, чтобы сказать ей, чтобы компилировать файлы библиотеки. Во-вторых, мне пришлось использовать -l и указать файл библиотеки для включения.
ЧАС:
CD H: \ Рабочий стол \ MinGW \ Bin
G ++ -c H: \ Desktop \ MinGW \ SOURCE \ LightSpacePrototype.C -o H: \ Desktop \ MinGW \ COMPILED \ LightSpacePrototype.exe -LH: \ Рабочий стол \ 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 comment(lib, "libIrrlicht.a")
Других решений пока нет …