一、DLL源文件:

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

二、静态调用:

#pragma comment(lib, "DemoDLL.lib")
extern "C" int add(int a, int b);using namespace std;// 静态调用DLL库
int static_call(int a, int b)
{return add(a, b);
}

三、动态调用:

// 动态调用DLL库
int dynamic_call(int a, int b)
{typedef int(*AddFunc)(int, int);HMODULE module = LoadLibrary(L"DemoDLL.dll");if (module == NULL){cout << "加载DemoDLL.dll动态库失败" << endl;return -1;}AddFunc add = (AddFunc)GetProcAddress(module, "add");return add(a, b);
}

四、完整调用代码:

#include <sstream>
#include <iomanip>
#include <iostream>
#include <Windows.h>#pragma comment(lib, "DemoDLL.lib")
extern "C" int add(int a, int b);using namespace std;// 静态调用DLL库
int static_call(int a, int b)
{return add(a, b);
}// 动态调用DLL库
int dynamic_call(int a, int b)
{typedef int(*AddFunc)(int, int);HMODULE module = LoadLibrary(L"DemoDLL.dll");if (module == NULL){cout << "加载DemoDLL.dll动态库失败" << endl;return -1;}AddFunc add = (AddFunc)GetProcAddress(module, "add");return add(a, b);
}int main()
{int n = 100, m = 200;cout << static_call(m, n) << endl;cout << dynamic_call(m, n) << endl;return 0;
}

C++中调用DLL中的函数的两种方式相关推荐

  1. 天马行空W:在C++中调用DLL中的函数

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  2. 在C++中调用DLL中的函数

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  3. linux exec 脚本之家,详解Shell脚本中调用另一个Shell脚本的三种方式

    主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 ...

  4. Android中实现SQLite数据库CRUD操作的两种方式

    Android中实现SQLite数据库CRUD操作的两种方式 SQLite是一款轻量级的关系型数据库,具有运行速度.占用资源少的特点.通常只需要几百KB的内存就够了,因此特别适合在移动设备上使用.SQ ...

  5. android布局密码,Android中EditText显示明文与密码的两种方式

    效果图如下所述: 布局 xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h ...

  6. 在C++中调用DLL中的函数(2)

    本文转自:http://blog.sina.com.cn/s/blog_53004b4901009h3b.html 应用程序使用DLL可以采用两种方式: 一种是隐式链接,另一种是显式链接.在使用DLL ...

  7. java native函数库_Java 层调用 Native 层函数的两种方式

    概述 Java 层如何调用Native层函数,大家都应该知道使用JNI(Java 本地接口). 通过在java层声明native方法,然后遵守JNI规范命名Native函数,即可建立Java层nati ...

  8. 在 Shell 脚本中调用另一个 Shell 脚本的三种方式

    先来说一下主要以下有几种方式: fork: 如果脚本有执行权限的话,path/to/foo.sh.如果没有,sh path/to/foo.sh. exec: exec path/to/foo.sh s ...

  9. QT之在QML中使用C++类和对象的两种方式

    一 类的方式实现在QML中使用C++对象 二 对象的方式实现在QML中使用C++对象 QML其实是对ECMAScript的扩展,融合了Qt object系统,它是一种新的解释性语言,QML引擎虽然由Q ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色配置)实战
  2. JAVA(IO流)知识整理
  3. 分分钟教会你使用HTML写Web页面
  4. asp.net错误.在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错...
  5. 2017-2018-2 20155228 《网络对抗技术》 实验四:恶意代码分析
  6. python面向对象(2)—— 继承(1)
  7. 用户不见了_03 | 为什么你设计的信息用户总是看不见
  8. iOS -- SKScene类
  9. JS学习记录(BOM部分)
  10. 博客目录列表(C与Linux部分)
  11. 解决Flink案例DataStream中使用keyBy(0),keyBy弃用的问题
  12. 蓝桥杯训练 2n皇后
  13. SQL中DB2数据库修改某字段长度或类型
  14. matlab %%?
  15. C++11 | 正则表达式(4)
  16. 大数据Spark技术数据分析综合实验:出租车数据分析
  17. 怎么修改思迅软件的服务器地址,思迅的服务器地址如何更改
  18. VMware中Linux网络配置
  19. 树莓派CM4_Tiny(双HDMI)扩展板运行Openwrt演示(有线以太网)
  20. 视觉测量—结构光标定1

热门文章

  1. 2017-2018-1 20155338 《信息安全系统设计基础》 第四周学习总结
  2. [JavaME]解决来电问题(Incoming Call)
  3. 我在大学毕业后学习Linux、python的一些经验
  4. 史上最正确的achemy安装方法
  5. J2ME下的手机游戏的优化
  6. 三年从前端小工到架构-知乎 Live 学习整理
  7. dom解析和生成XML文件
  8. C语言 实现一个函数判断year是不是润年
  9. SQL Server 为什么事务日志自动增长会降低你的性能
  10. 【Linux】 任务调度/计划 cron