2014-10-30 81 views
2

我的Irrlicht程序沒有鏈接。我使用的編譯器是g ++。C++ Irrlicht程序沒有鏈接:「undefined reference to __imp_createDevice」

代碼:

#include <irrlicht.h> 

int main() 
{ 
    irr::IrrlichtDevice *device = irr::createDevice(); 
    // And other init stuff 
    while(device->run()) 
    { 
    driver->beginScene(); 
    smgr->drawAll(); 
    guienv->drawAll(); 
    driver->endScene(); 
    } 
    device->drop(); 
} 

連接器輸出:

... 
(path)/main.cpp:28: undefined reference to `__imp_createDevice' 
collect2.exe: error: ld returned 1 exit status 

命令行:

g++.exe -o "(Path)\Test.exe" "(Path)\Test\main.o" 
..\..\..\..\..\..\MinGW\lib\libIrrlicht.a 

鏈接器創立的庫文件。怎麼了?

編輯: 我做了很少的實驗。結果是,當我對createDevice() -line out發表評論時,沒有鏈接器錯誤會發生。這意味着,該鏈接程序可以創建所有其他功能,即IrrlichtDevice::run()

+0

在黑暗中刺 - 是IrrLichtDevice還是IrrlichtDevice你聲明? – Jimmy 2014-10-30 18:11:45

+0

@Jimmy:只是一個錯字。在原始代碼中它是'IrrlichtDevice'。 – 2014-10-30 19:29:41

回答

1

__imp_createDevice是指爲鏈接到.so或.dll的動態構建的.lib文件。 See this post and answer.

查找爲靜態鏈接構建的.lib,或者檢查是否必須指定預編譯器定義,例如_IRR_STATIC_LIB_,IRRLICHT_STATIC或IRRLICHT_EXPORTS以具有正確的鏈接。

相關問題