C++ 多个类的 DLL 封装以及隐式链接和显式链接 2 种方法调用

将OpenCL和OpenCV一些简单的方法封装成DLL,具体OpenCL和OpenCV的配置方法可以参考本人的博客。

VS2015下安装与编译OpenCV源码并在VS2015下配置OpenCV环境

VS上运行CUDA,并在NVDIA显卡安装的CUDA中运行OpenCL

1.  DLL封装

(1)  创建DLL工程

新建一个Win32控制台应用程序,项目名称为buildopencldll,选择DLL和空项目。

(2)新建头文件

头文件:createopencldll.h

向动态链接库添加类的核心代码:

为显式链接做准备的导出函数:

创建类时必须加上CREATEOPENCLDLL_API,如写成class CREATEOPENCLDLL_APICreateOpenCLDLL 要不然生成不了lib文件

完整的头文件代码如下:

(3)Cpp文件:createopencldll.cpp

需要添加:#define CREATEOPENCLDLL_EXPORTS

完整的cpp代码如下:

(4)生成代码

按生成后,在的debug或者release文件夹中,会生成相应的DLL文件和LIB文件,如下图生成buildopencldll.dllbuildopencldll.lib
 

2. C++ 多个类的 DLL 封装

封装好一个类之后,在后面的类可以调用这个类生成的dll,再封装新类的dll。具体过程可以参考第1步。

在工程中添加头文件createopencldll.h到新的工程目录。在debug或者release文件中复制buildopencldll.lib到新的工程目录如下:

 在项目中,属性->连接器->输入->附加依赖项中,添加buildopencldll.lib
将buildopencldll.dll复制到新工程的debug或者release目录下。
具体新项目的createopencvdll.h代码如下:

createopencvdll.cpp代码如下:

3. DLL 的调用

新建一个win32控制台应用程序,选择控制台应用程序,工程名字为:testdll,新建main函数。
(1)隐式链接

方法1:

在工程中添加头文件createopencldll.h到新的工程目录。在debug或者release文件中复制buildopencldll.lib到新的工程目录如下:

在项目中,属性->连接器->输入->附加依赖项中,添加buildopencldll.lib
将buildopencldll.dll复制到新工程的debug或者release目录下。
测试代码如下:

结果图如下:


方法2:
在方法1的基础下,不添加buildopencldll.lib到附加依赖项中,使用代码的方式添加,即在原来的代码下多添加:#pragmacomment(lib, “buildopencldll.lib”)代码如下:

(2)显式链接

参考博客:http://blog.csdn.net/chollima/article/details/5324808

这个博客先定义虚基类,然后到基类等的实现,这样比较好。

这种方法不需要createopencldll.lib,将createopencldll.dll复制到debug或者release目录。

具体实现代码如下:

如果出现错误:

错误    C2664       “HMODULELoadLibraryW(LPCWSTR)”: 无法将参数 1 从“const char [19]”转换为“LPCWSTR”    bulidopecvdll    f:\openclproject\bulidopecvdll\bulidopecvdll\main.cpp  18

进入属性->常规->字符集,将使用Unicode字符集改为未设置即可。

参考博客:

http://blog.csdn.net/xiaowei_cqu/article/details/7737682

https://msdn.microsoft.com/zh-cn/library/ms235636

http://www.cnblogs.com/weidiao/p/5013889.html

http://blog.csdn.net/xiamentingtao/article/details/51052918

http://www.cnblogs.com/laogao/archive/2012/12/07/2806528.html

http://blog.csdn.net/chollima/article/details/5324808

 

1 5 收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部