第一种 导出方式

extern "C" _declspec(dllexport) int Plus(int x, int y);
extern "C" _declspec(dllexport) int Sub(int x, int y);
extern "C" _declspec(dllexport) int Mul(int x, int y);
extern "C" _declspec(dllexport) int Div(int x, int y); int Plus(int x, int y)
{
return x + y;
} int Sub(int x, int y)
{
return x - y;
} int Mul(int x, int y)
{
return x * y;
} int Div(int x, int y)
{
return x / y;
}

第二种 导出方式

在项目上添加一个def文件

// def文件里面
EXPORTS
Plus @
Sub @
Mul @ NONAME // (此种方式只导出序号)
Div @
// CPP文件里面
int Plus(int x, int y)
{
return x + y;
} int Sub(int x, int y)
{
return x - y;
} int Mul(int x, int y)
{
return x * y;
} int Div(int x, int y)
{
return x / y;
}

DLL使用

第一种 隐式链接

// 先把TestDll.lib 和 TestDll.dll放在main.cpp 同一目录下
#include <stdio.h>
#pragma comment(lib, "TestDll.lib") extern "C" _declspec(dllimport) int Plus(int x, int y);
extern "C" _declspec(dllimport) int Sub(int x, int y);
extern "C" _declspec(dllimport) int Mul(int x, int y);
extern "C" _declspec(dllimport) int Div(int x, int y); int main()
{
int d = Plus(, );
printf("%d", d);
getchar();
return ;
}

第二种 显示链接

#include <stdio.h>
#include <windows.h> int main()
{
// 定义函数指针
typedef int(*lpPlus)(int, int);
typedef int(*lpSub)(int, int);
typedef int(*lpMul)(int, int);
typedef int(*lpDiv)(int, int);
// 获取模块句柄
HMODULE hMoudle = LoadLibrary(L"TestDll.dll");
// 获取函数地址
lpPlus MyPlus = (lpPlus)GetProcAddress(hMoudle, "Plus");
lpSub MySub = (lpSub)GetProcAddress(hMoudle, "Sub");
lpMul MyMul = (lpMul)GetProcAddress(hMoudle, "Mul");
lpDiv Mydiv = (lpDiv)GetProcAddress(hMoudle, "Div");
// 调用
int d = MyPlus(, );
printf("%d", d);
getchar();
return ;
}

最新文章

  1. chrome调试命令模式
  2. 转载——Python模拟登录代码
  3. 可以用google了
  4. Haskell高阶函数
  5. 利用rman进行异机还原(目录相同)
  6. CentOS7与Win7双系统引导问题
  7. TensorFlow实现与优化深度神经网络
  8. 最短路(spfa)
  9. 深度学习梯度反向传播出现Nan值的原因归类
  10. Python根据路径名称获取文件的名称以及所在的路径
  11. 安装老版本redis .NET 客户端
  12. java 字符串截取类 区分中文、英文、数字、标点符号
  13. php传值,传地址,传引用的区别
  14. java中集合格式及json格式的特点和转换
  15. python Tensorflow 实现图像的卷积处理
  16. Jmeter-常用函数之__CSVRead使用
  17. intellij idea使用maven本地仓库及修改本地仓库路径
  18. 安装S_S相关报错的troubleshooting
  19. Spring Boot 例一 实现jsonp接口
  20. python函数getopt用法

热门文章

  1. 图解centos7如何关闭ipv6仅使用ipv4
  2. Python日志模块应用
  3. PLSQL 经常自动断开失去连接的解决过程
  4. React开发环境配置
  5. JAVA-开发构建Gradle项目安装使用教程
  6. Python将多个excel表格合并为一个表格
  7. nginx重新编译不停服
  8. JS创建类和对象,看完了,头就不大了
  9. iOS实现图片无限轮播之使用第三方库SDCycleScrollView(转)
  10. 在Flutter中构建布局