由雲臺協議DLL淺談插件程序的編寫(下)【原創】
1.創建項目,“Visual C++項目”--->“Win32”--->“Win32 項目”--->“DLL”,選中“導出符號”,(VS2003平臺),按源碼目錄組織規範設置項目,參考我的blog 2004.12其中文章。
2.添加鏈接庫導出定義文件:****.def,加入到項目中。
; ptzPelco-D.def : 聲明 DLL 的模塊參數。
LIBRARY "ptzPelco-D"
EXPORTS
; 此處可以是顯式導出
CreatePTZInstance PRIVATE
ProtocolNames DATA
; 此處可以是顯式導出
CreatePTZInstance PRIVATE
ProtocolNames DATA
說明:上面分別是導出變量和導出函數。
3.把工程默認的導出變量和導出函數刪除,默認導出的類也刪除(頭文件可刪空)。
4.在DllMain所在的cpp文件添加定義:
const char * ProtocolNames[] =
const char * ProtocolNames[] =
{
"PELCO-D",
"PELCO-P",
0 // 必須以0表示結束
};
CPTZInterface * __stdcall CreatePTZInstance(const char * pszProtocolsName)
{
if (0 == strcmp(pszProtocolsName, ProtocolNames[0]))
{
return new CPelco_D; // 看下面的定義!
}
if (0 == strcmp(pszProtocolsName, ProtocolNames[1]))
{
return new CPelco_P; // 看下面的定義!
}
return 0;
}
5.從接口派生出一個類,定義如下:
"PELCO-D",
"PELCO-P",
0 // 必須以0表示結束
};
CPTZInterface * __stdcall CreatePTZInstance(const char * pszProtocolsName)
{
if (0 == strcmp(pszProtocolsName, ProtocolNames[0]))
{
return new CPelco_D; // 看下面的定義!
}
if (0 == strcmp(pszProtocolsName, ProtocolNames[1]))
{
return new CPelco_P; // 看下面的定義!
}
return 0;
}
5.從接口派生出一個類,定義如下:
class CPelco_P: public CPTZInterface { …… }
注意上面的CreatePTZInstance函數,這樣就達到了創建這個協議對象的目的了。
注意上面的CreatePTZInstance函數,這樣就達到了創建這個協議對象的目的了。
6.說明:創建的對象用該類的Destroy()銷燬,由使用者調用。
7.轉載請保留完整文檔,天衣有縫原創,2004.12.24凌晨0:05,深圳南山科技園
7.轉載請保留完整文檔,天衣有縫原創,2004.12.24凌晨0:05,深圳南山科技園