關於生成DLL

2021-05-12 07:30:17 字數 779 閱讀 8445

現在寫的通用的平台,client/server side 都要求外掛程式形式,每乙個外掛程式宿主於乙個動態庫中,在symbian中,動態的呼叫有些不是很方便,現在總結一下其各種型別庫的載入形式。

0, 靜態庫:

1, 動態庫:

a,靜態載入:

b,動態載入:

動態庫動態載入的幾個問題:

1,在emulator上不能被load,原因有幾個可能:

1.1此動態庫中使用了c的庫(如strlen/malloc,free  etc.)並且在依賴的lib你手工加入了estlib.lib,編譯成功,但無法正常load,因為carbide.vs2.0.1在進行dll編譯時,自動加入了estlib.lib,如果你再加入estlib.lib就會出現載入失敗,有點弱智編譯環境吧,當我使用openc時,也會出現這個問題。動態庫必須使用codewarrior進行編譯,才能在除錯環境下進行載入,不然用carbide.vs2.01編譯後,載入會返回-2錯誤。

1.2但是如果你使用exe就必須在工程中加入estlib.lib.因為exe預設沒有estlib.lib包含。 

1.3能力:動態庫的操作能力必須與載入它的exe/dll能力匹配,匹配原則為。exe/dll能力一定是被它載入的dll能力的子集(?) 

2,在真機上載入失敗:

2.1.沒有訪問目錄的許可權:

可能安裝動態庫的目錄,引導程式沒有訪問許可權,如sys/bin/目錄,沒有訪問許可權,或者private等目錄,返回錯誤碼一般為-46。可以為你的應用程式加入allfiles能力

2.2. 載入目錄錯誤(載入返回值一般為-1)

QT生成DLL,呼叫DLL

一.靜態庫的生成 1.測試目錄 lib 2.原始碼檔名 mywindow.h,mywindow.cpp,類mywindow繼承於qpushbutton,並將文字設定為 i m in class mywindow 3.編寫專案檔案 mywindow.pro 注意兩點 template lib conf...

QT生成DLL,呼叫DLL

一.靜態庫的生成 1.測試目錄 lib 2.原始碼檔名 mywindow.h,mywindow.cpp,類mywindow繼承於qpushbutton,並將文字設定為 i m in class mywindow 3.編寫專案檔案 mywindow.pro 注意兩點 template lib conf...

生成dll錯誤

1 已啟動生成 專案 pcidll,配置 release win32 1 正在建立庫 d work dll release pcidll.lib 和物件 d work dll release pcidll.exp 1 pcidll.obj error lnk2001 無法解析的外部符號 imp se...