現在寫的通用的平台,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...