dll学习总结

1、如何写dll

        新建项目选择win32项目,中间选择应用程序类型为DLL类型,附加选项可以勾选空项目。向项目中添加同名的.h和.cpp文件,用于实行相应的内容。(dllmain可以先忽略,大部分情况可以不用写,要写的话另外学)

        头文件和写普通函数类似用作声明,cpp用于实现声明的函数,和正常写函数不同的是声明的函数需要用

extern "C" _declspec(dllimport) 修饰函数声明,其中extern "C"可以增加代码的兼容性,在c或者c++都能正常使用, _declspec(dllimport)则是修饰dll函数或者类的标识符。

//xxx.h
extern "C" _declspec(dllimport) int myadd(int a, int b);

        .cpp实现声明的函数是和普通函数一样。

//xxx.cpp
#include"xxx.h"
int myadd(int a,int b){
    return a+b;
}

2、导出dll

        导出dll时最好区分32和64并且区分debug和release版本,如果使用到其他库函数如stl等则必须区分版本,因为stl的debug和release对于内存的操作有区别。

        区分生成的dll可以在dll项目的属性->配置属性->常规->目标文件名 在(projectName)后面加d表示debug版本,release不需要

         在程序编译后则可以在项目目录下的x86或者x64下找到对应的debug和release文件夹,对应的lib和dll文件在文件夹里。

3、使用自己写的dll

        lib有多种不一样的添加方式

  1、直接将对应版本的lib和dll文件拷贝到项目路径下,在属性->链接器->附加依赖项中将使用的lib文件放进去。

  2、将lib文件放到项目目录下的自己新建的文件夹中,在属性->链接器->输入->附加依赖项中将使用的lib文件放进去,然后在属性->链接器->常规->附加库目录中将新建的文件夹路径放进去。

  3、第三种方式类似第二种方式,将导出dll的项目下的release或者debug文件夹作为2中的新建的文件夹,将这个路径放到属性->链接器->常规->附加库目录去,然后在属性->链接器->输入->附加依赖项中将使用的lib文件放进去。

        无论什么方式,.dll文件都需要拷贝到路径下或者使用到dll的cpp的路径下,然后将dll里面写的头文件也拷贝过来添加到项目头文件中,或者将dll的项目目录添加到包含目录中,然后使用时将dll的头文件包含进去则可以调用dll实现的函数了

 4、学习过程中遇到的应该常见的dll报错

  1、无法打开输入文件"xxx.lib"

        解决方法:检查项目路径或者附加库目录是否能找到对应文件,需要确保项目路径或者附加库目录至少有一个能找到这个lib

  2、找不到_imp_add......等

        使用dll内的函数需要将对应的头文件先包含到cpp中。

5、参考链接

DLL编写教程(绝对经典之作) - DoubleLi - 博客园

C++写dll文件用C#调用_cccccc1212的博客-CSDN博客

.dll 文件编写和使用_whlook的博客-CSDN博客_dll怎么写

(3条消息) [转]动态库*.dll文件的Debug/Release版本是否可以混用(交叉用)?_明月清风-精进不止的博客-CSDN博客

VC++发布Dll如何区分Debug和Release_风轻扬x的博客-CSDN博客_debug和release的dll

关于lib文件的介绍_量化橙同学的博客-CSDN博客_lib

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值