如何创建DLL及使用创建的DLL

来源:互联网 发布:学历网络教育费用 编辑:程序博客网 时间:2024/05/22 16:12

放国庆假期前的最后一天,记录下如何将函数和类等封装成动态链接库并在其他程序中使用

如何创建DLL

       首先创建一个空的解决方案

       在解决方案中添加你想要的项目,比如楼主添加了自己要用的接口vqa_api , 创建的时候选择控制台或者win32程序都可以

       注意程序设置时,程序类型要勾选DLL,附加选项可以勾选导出符号,不勾选空项目这样可以使用VS提供的自带DLL模板,我们只需要修改里面的内容就可以了

       这个模板想要说明一下,这个VQA_API_EXPORTS是模板中预处理器已经帮我们定义好了的,当定义了这个关键字说明我们是DLL提供者,此时采用__declspec(dllexport)输出定义的类,函数,变量等;而使用我们定义的DLL的人不会定义宏VQA_API_EXPORTS,因此他们使用的是__declspec(dllimport)关键字,导入DLL中的定义内容。可以看到模板中定义了类Cvqa_api,变量nvqa_api,函数fnvqa_api等,其内容可以在vqa_api.cpp中更改。

       当.h和.cpp都定义好了之后可以生成该项目,这样就会发现在Debug文件夹下生成对应的.dll和.lib文件。

       插播一句,貌似具体生成到哪个文件夹与你的输出目录有关,可以在项目属性->常规->输出目录中更改,如果不知道目录的定义可以查看其中的宏。

       这样我们的DLL动态链接库基本上就算创建好了,下面讲一下如何使用生成的DLL。

如何使用DLL

       我们生成的DLL存放的是各类程序的函数的实现过程,当程序需要调用函数时需要先载入DLL,然后取得函数的地址,最后进行调用。那么如何使用这些DLL呢。

       首先创建一个新的解决方案,比如test1, test1中可以新建各种项目,将之前创建的.dll文件拷贝到相应的项目文件夹下,比如创建解决方案的同时会有一个与解决方案同名的项目文件夹test1,我们将.dll拷贝到这个文件夹下。

       接下来需要设置三个地方才能使我们的DLL能被test1这个新的项目使用:
1. 设置C\C++->常规->附加包含目录,这个目录是你之前的源头文件.h存放的地方,只要把文件的路径输入进去就好了,可以使用绝对路径也可以使用宏设置路径,比如我使用了绝对路径。


2. 设置链接器->常规->附加库目录,这个目录是之前随着.dll生成的.lib文件所在目录(这个.lib和我们的静态链接库的lib不同,是dll生成所附带的),比如我把它存在了test1下创建的lib目录下

3. 链接器->输出->附加依赖项,这个附加依赖项就是我们的.lib文件。

       配置完上述几项,就可以尝试载入你之前定义的头文件以DLL中的各种函数和类等了,成功使用了我们自己定义的DLL。