VC-一个简单的DLL编写与调用

初学VC,不得方法,每天误打误撞的学习一点,代码存在桌面怕是一旦删除了就遗忘了,还是记录下来为妙。  (诚心希望高手指教c与c++结合学习的方法!)

昨天看到了一篇文章,讲的是dll的简单创建与调用,自己实践了一下,可用。现叙述如下:

 

1)打开VC ,创建工程-Win32 Dynamic-Link Library

2)创建cpp文件

3)dll代码

extern "C" int _declspec(dllexport) add(int a,int b){
 return a+b;
}

4)编译-链接

 

5)新建工程-Win32 Console-Application

6)新建cpp文件,代码如下:

#include <iostream.h>
#include <Windows.h>
void main(){
 typedef int (*ADD)(int ,int);//函数指针类型
 HINSTANCE Hint = ::LoadLibrary("c3.dll");//加载我们刚才生成的dll
 ADD add=(ADD)GetProcAddress(Hint,"add") ; //取得dll导出的add方法
 cout<<add(3,4)<<endl;
}

注释:若不加extern "c" 则用Depends查看dll时会发现外部函数混乱,为:?add@@YAHHH@Z    ;若不加_declexp(dllexport) 则无法导出外部函数,导致调用失败。但这两句可以通过一个单独的*.def文件说明,这个文件放在dll工程的cpp所在目录即可,文件内容如下:

LIBRARY
EXPORTS
myadd=add @4  //将外部函数编号,作用是可按编号调用该函数。

7)重复5、6两步骤,文件代码如下:

#include <iostream.h>
#include <Windows.h>
void main(){
 typedef int (*ADD)(int ,int);//函数指针类型
 HINSTANCE Hint = ::LoadLibrary("aa.dll");//加载我们刚才生成的dll
 ADD add = (ADD)GetProcAddress(Hint,MAKEINTRESOURCE(4));//取得dll导出的add方法
 cout<<add(3,4)<<endl;
 add=(ADD)GetProcAddress(Hint,"myadd");
 cout<<add(3,4)<<endl;
}
这样就按两种方式调用了函数,并且得到了一致的结果。 

好了,仅作为笔记,虽然这些在昨天还是陌生,但相信在未来的某天还是能用上的。

前辈们如果飘过,还是希望能够指点下学习C/C++的方法,感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值