由云台协议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,深圳南山科技园