在symbian中動態載入dll
2023年08月27日 星期三 下午 05:05
我想大家對symbian已經有了基本的了解,我就不再介紹了。總起來說,我感覺symbian和windows系統相當的相似,而s60的程式設計框架和mfc又有八分相近。那麼,在windows中我們能動態的引入dll那在symbian中也應該可以。就做了個小測試,過程如下:
一、編寫動態鏈結庫
首先建立乙個工程檔案dlltry.mmp內容如下:
target dlltry.dll
targettype dll
uid 0x1000008d 0x2000118d
sourcepath ../src
source dlltry.cpp
userinclude . ../inc
systeminclude /epoc32/include
library euser.lib
exportunfrozen
建立bld.inf檔案,如下:
prj_mmpfiles
../src/dlltry.mmp
標頭檔案dlltry.h,如下:
#ifndef __dll_try_h
#define __dll_try_h
#ifndef __w32std_h__
#include
#endif
#ifndef __e32std_h__
#include
#endif
#ifndef __e32base_h__
#include
#endif
class cdlltry : public cbase ;
export_c cdlltry* create(); //宣告匯出函式
#endif
**檔案dlltry.cpp,如下:
#include "dlltry.h"
//入口
export_c tint e32dll(tdllreason)
//例項化cdlltry
export_c cdlltry* create()
cdlltry* cdlltry::newl()
cdlltry* cdlltry::newlc()
tbool cdlltry::testmethod()
cdlltry::cdlltry() {}
cdlltry::~cdlltry() {}
void cdlltry::constructl()
然後,編譯,把頭檔案dlltry.h複製到測試程式的inc目錄,把dlltry.dll複製到某一特定目錄(如z:/system下)。
二、實現測試程式
隨便建立乙個工程,在想匯入dll的地方輸入**如下:
rlibrary lib;
tlibraryfunction create= null; //函式指標
if( lib.load ( _l("dlltry.dll/n") , _l("z://system//") ) != kerrnone) //動態匯入dll
user::exit( 40 );
//至此,匯入完成!
create=lib.lookup ( 1 ); //獲得第乙個匯出函式
idlltry= (cdlltry*) create(); //利用這個函式例項化cdlltry
if( !idlltry )
user::exit( 41 );
if(!idlltry->testmethod () )
user::exit(43);
1、在匯出函式前必須加export_c;
2、
3、 .dll檔案生成後在d:/symbian/6.1/series60/epoc32/release/wins/udeb類似的目錄下;
4、
5、 第乙個uid用來標誌dll檔案,第二個是自己向symbian申請的。
大家自己試一試吧!
在Symbian中動態載入DLL
在symbian中動態載入dll 我想大家對symbian已經有了基本的了解,我就不再介紹了。總起來說,我感覺symbian和windows系統相當的相似,而s60的程式設計框架和mfc又有八分相近。那麼,在windows中我們能動態的引入dll那在symbian中也應該可以。就做了個小測試,過程如...
也說說Silverlight動態載入DLL
今天手頭的專案遇到乙個問題,為了描述這個問題,我建立了乙個簡單的專案,結構如下 3,如果在ria上啟動新例項進行除錯,可以正常通過。效果是 4,但是在web上啟動新例項進行除錯就會報錯 會提示安全性錯誤。經過反覆測試,還不停的修改策略檔案等,最後確定了是dll的載入路徑的問題,錯誤的寫法有很多,同事...
在程式中動態載入動態庫(win)
以下內容是乙個在windows環境下的程式中載入動態庫的示例。環境 vs 1.生成動態庫 在vs中建立乙個專案,使用下面的 生成乙個動態庫windll.dll。專案建立後在專案的屬性 c c 預處理器中新增預處理巨集win dll exports,這個在windll.件中使用。ifndef win ...