以前没有做dll的习惯,写的代码也是自己用。现在的工作需要把自己的代码封装好了移植到别人的系统中,dll就必不可少了。
根据自己的工程,写一个小示例:
编译环境:
windows 7
VS 2008
工程原来是基于console的,现在改成基于dll的。
第一步,
修改 项目属性->配置属性->常规->配置类型 中 应用程序(.exe) 为 动态库(.dll)。
第二步,
将原来的main函数所在文件删掉,添加自己的动态库类文件keyptdetdll .h和.keyptdetdllcpp。
keyptdetdll .h和.keyptdetdllcpp文件 与 普通的类文件基本相似,不同之处在于在于这里添加的.h文件在开始处:
#ifndef KEYPTDETDLL_H
#define KEYPTDETDLL_H
#ifdef KEYPT_EXPORT
#define KEYPTDETDLL __declspec(dllexport)
#else
#define KEYPTDETDLL __declspec(dllimport)
#endif
__declspec(dllexport) 修饰使 DLL 能够导出该功能以供其他应用程序使用。在类声明中,加入该修饰符:
class KEYPTDETDLL IKeyPointDetector
{
public:
IKeyPointDetector();
~IKeyPointDetector();
public:
};
第三步,
加入类的其它功能,就可以编译、链接了。由于之前是由console转为dll的,所以就需要将输出文件的名字改为后缀为dll的名字(项目属性->配置属性->链接器->常规->输出文件)。链接成功后,会看到相应的lib 和 dll 文件。
第四步,调试和测试。
一般会在一个解决方案下再加入一个工程,便于调试和测试生成的dll。
这个测试工程需要在 项目属性->配置属性->链接器->附加依赖项 中添加上一步生成的lib文件,并且在 项目属性->配置属性->链接器->附件依赖库 中加入dll所在路径,然后就可以进行调试和测试了。
没做之前还觉得挺复杂,运行成功后觉得还是挺简单的。
参考:http://msdn.microsoft.com/zh-cn/library/ms235636.aspx
转载请注明:http://blog.csdn.net/shaoxiaohu1/article/details/15075287