2013-12-12 39 views
0

我從源(dlls)構建Qt,並試圖構建使用Qt dll的應用程序。我對C++沒有太多的經驗,所以我遇到了我確定的一個非常基本的問題。使用從C++代碼中定義的DLL函數

我的版本是沒有與像這樣的錯誤包括:

Fatal error: QNetworkProxy: No such file or directory 

這裏是我使用的(我也用-L正確的文件夾添加到庫路徑g ++命令,但也沒有工作):

g++ -l..\..\wkqt\bin\QtCore4.dll -l..\..\wkqt\bin\QtNetwork4.dll -l..\..\wkqt\bin\QtWebKit4.dll -I..\include -Ishared -Ipdf -Ilib -Iimage -o ..\bin\wkhtmltopdf.exe pdf\*.cc lib\*.cc image\*.cc shared\*.cc 

我在Visual Studio中嘗試以及(假設它不會建立,但我想看看我是否能至少包括有適當Qt的DLL)和我得到相同的錯誤。我用g ++編譯的方式做錯了什麼?如果我正確地連接了Dll,那麼從我的代碼中使用Qt函數的正確方法是什麼?

爲了澄清,我不在尋找如何正確使用Qt。我的問題是:從本地C++代碼使用任何Dll中定義的函數的正確方法是什麼?我很抱歉,如果這是一個非常基本的問題,但我無法在Google上找到明確的答案,而且我也沒有任何C++經驗,並且包含第三方庫以供C++代碼使用。

+0

http://translate.google.com/translate?hl=en&sl=pl&u=http://www.mblog.boo.pl/artykul-55 -qt致命錯誤-NO-這樣-文件或目錄-rozwiazanie.html&先前= /搜索%3Fq%3DQNetworkProxy:%2BNo%2Bsuch%2Bfile%2Bor%2Bdirectory%26client%3Dfirefox-A%26hs%3DFfB%26rls %3Dorg.mozilla:en-US:官方%26channel%3Drcs –

+0

DLLs是_Dynamically_ Linked Libraries。 –

+0

'g ++'參數的順序很重要,你的'g ++'命令可能是錯誤的。 C++源文件應該首先出現。 –

回答

0

DLL可以通過動態加載它們並調用其使用的函數來使用。

調用公開的函數中的遊戲內 假設函數首先定義它們的語法是語法是

BOOL MyFunction(int a,char* pszString) 

然後定義語法

#typedef BOOL (WINAPI *PMYFUNCTION)(int a,char* pszString) 

然後使物體

PMYFUNCTION pfnMyFunction; 

和通過在loadlib之後調用GetProcaddress來獲得有效的指針rarycall

HMODULE hlib= Loadlibrary("c:\\Mylib.dll"); 
if(hlib) 

{ pfnMyFunction = (PMYFUNCTION)Getprocaddress(hlib,"MyFunction"); } 

希望這有助於...

+0

我開始以這種方式實現它(這是迄今爲止工作),但後來找出我需要的標題。 –