VC编程之VC动态链接库的编写与调用
小标 2019-03-20 来源 : 阅读 1075 评论 0

摘要:本文主要向大家介绍了VC编程之VC动态链接库的编写与调用,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍了VC编程之VC动态链接库的编写与调用,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

VC编程之VC动态链接库的编写与调用

VC下的非MFC动态链接库学习demo,包括动态调用和静态调用。两者的区别是动态调用依赖win API接口加载dll、获取地址、释放dll句柄。而静态调用是直接调用dll里面的东西。
git地址://git.oschina.net/kanakdillon/VC_Dll.git
VC中动态连接库的调用有两种方法,一种是显示链接调用,另外一种是隐式链接调用。
先编写DLL,MyDll.h代码:
#ifdef MYDLL_EXPORTS#define MYDLL_API __declspec(dllexport)#else#define MYDLL_API __declspec(dllimport)#endif
MYDLL_API int Max(int a, int b);MYDLL_API int Min(int a, int b);
MyDll.cpp:
#include "MyDll.h"
int Max(int a, int b) {
 if(a>b)
  return a;
 else
  return b;
}
int Min(int a, int b) {
 if(a>b)
  return b;
 else
  return a;
}
MyDll.def:
LIBRARY

EXPORTS
 Max
 Min
编写显示链接测试,TestDll.cpp:
//DLL显式链接#include "iostream"#include "Windows.h"using namespace std;typedef int(*LPFNDLLFUNC)(int, int); //定义一个函数指针类型 类型为int
int main(){

 LPFNDLLFUNC lpfnDllFunc;
 //初始化一个句柄指向目标dll
 HINSTANCE hInst = LoadLibrary("..\\Debug\\VC_Dll.dll");

 if(hInst == NULL)
  cout<<"erro!";
 else
  cout<<"加载成功!";
 //获取dll的函数

 lpfnDllFunc = (LPFNDLLFUNC)GetProcAddress(hInst, "Max");

 if(hInst == NULL)
  cout<<"erro!";
 else {
  int result;
  result = lpfnDllFunc(1, 2);
  cout<<result<<endl;
 }
 //释放句柄
 FreeLibrary(hInst);
 return 0;
}
编写隐式链接测试,CallDll.cpp
//DLL隐式链接#include "iostream"
using namespace std;
#pragma comment(lib, "..\\Debug\\VC_Dll.lib")//如果DLL使用的是def文件,要删除TestDll.h文件中关键字extern "C",这个卡了有几个钟!!//extern "C" _declspec(dllimport) int Max(int a, int b);_declspec(dllimport) int Max(int a, int b);
int main() {
 int result = Max(2, 3);
 cout<<result<<endl;
 return 0;
}    

以上就介绍了VC/MFC的学习,希望对VC/MFC有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言VC/MFC频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程