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 ファイルで次のコマンドを実行します。

ひ:

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:\Desktop\ MinGW\irrlicht-1.8\include

CMD

上で述べたように、検索するヘッダー ファイル ディレクトリを指定する -I は正常に機能します。ただし、チュートリアルはMinGWではなくVisual C ++用であるため、ライブラリディレクトリに混乱しています。したがって、チュートリアルでは、私が持っているように H:\Desktop\MinGW\irrlicht-1.8\lib\Win32-gcc ではなく、パスを H:\Desktop\MinGW\irrlicht-1.8\lib\Win32-visualstudio として指定するように指示されています。MinGW バージョンのように見えるので、gcc を使用することになっていると思います。ただし、チュートリアルでは、「#pragma comment(lib, "Irrlicht.lib")」が必要だと書かれていましたが、Win32-gcc には Irrlicht.lib ファイルはなく、libIrrlicht.a と libIrrlicht.def という 2 つのファイルだけがあり、ただし、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;
}
4

1 に答える 1