动态链接库之 隐式调用——vs手把手演示
来源:互联网 发布:霸王的大陆java版本 编辑:程序博客网 时间:2024/05/18 02:14
VS版本: 2013
首先要生成DLL吧。在vs中新建项目,选择win32项目,下一步,勾选 DLL, 导出符号:
完成,就创建了该有的文件。主要看到2个文件,一个是dll的头文件,一个是dll的cpp文件:
看到我们的头文件中,自带了一个函数:DLL_STATIC_API int fndll_static(void);
// 下列 ifdef 块是创建使从 DLL 导出更简单的// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL_STATIC_EXPORTS// 符号编译的。在使用此 DLL 的// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将// DLL_STATIC_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的// 符号视为是被导出的。#ifdef DLL_STATIC_EXPORTS#define DLL_STATIC_API __declspec(dllexport)#else#define DLL_STATIC_API __declspec(dllimport)#endif// 此类是从 dll_static.dll 导出的class DLL_STATIC_API Cdll_static {public:Cdll_static(void);// TODO: 在此添加您的方法。};extern DLL_STATIC_API int ndll_static;DLL_STATIC_API int fndll_static(void);cpp文件中的定义:
// dll_static.cpp : 定义 DLL 应用程序的导出函数。//#include "stdafx.h"#include "dll_static.h"// 这是导出变量的一个示例DLL_STATIC_API int ndll_static=0;// 这是导出函数的一个示例。DLL_STATIC_API int fndll_static(void){return 42;}// 这是已导出类的构造函数。// 有关类定义的信息,请参阅 dll_static.hCdll_static::Cdll_static(){return;}点击生成->生成DLL,生成之后就有:
现在就导出了dll, lib 文件啦。
现在我们再开一个cpp项目去尝试调用导出的dll,比如说,main.cpp简单的代码如下:
#include<stdio.h>#include<iostream>#include<Windows.h>#include "dll_static.h"#pragma comment(lib, "dll_static.lib")//这个是一定需要lib文件的!using namespace std;int main(){cout << "hello world!\n" << endl;cout << fndll_static() << endl;system("pause");return 0;}
简单的隐式调用的代码就是这样的,需要头文件,lib文件,dll文件——还要注意把这几个文件放入相应的路径 或者 使用绝对路径去引用他们。
最后的结果就是,我们main.cpp文件可以调用DLL中 fndll_static 函数啦。——可以看出,隐式调用是比较麻烦滴。
阅读全文
0 0
- 动态链接库之 隐式调用——vs手把手演示
- 动态链接库之 显式调用——vs手把手演示
- 动态链接库的隐式调用
- 利用VS编写并调用动态链接库
- VS之动态库实现和调用
- VS动态链接库隐式创建和调用
- VS下创建静态链接库和动态链接库及其调用
- VC与Matlab混合编程之调用动态链接库dll(C++)——<二>
- vs动态链接库项目
- 简单的动态链接库代码演示
- Python调用C语言之如何调用动态链接库
- 链接动态库vs链接静态库
- 静态链接库 VS 动态链接库
- 静态链接库 VS 动态链接库
- 动态链接库vs静态链接库
- 静态链接库vs动态链接库
- VS 调用动态链接库 PInvokeStackImbalance 对 PInvoke 函数“ ”的调用导致堆栈不对称
- 模块化编程之动态链接库:隐式链接
- 怎么从数组a中减去数组b,得到数组C
- 普宁跨境电商外贸 之 到底要不要寄样品? 怎么寄样品?
- okhttp的依赖
- 线程池 信号量
- leetcode--14. Longest Common Prefix
- 动态链接库之 隐式调用——vs手把手演示
- [RK3399][Android7.1] Ubuntu编译环境OpenJDK 8安装
- Android引入IjkPlayer无法播放mkv格式视频的解决方案
- 常用Linux命令大全
- Unity UI层元素渲染顺序
- 运营商名称显示规则
- lombok插件使用
- 637. Average of Levels in Binary Tree
- MindManager 2018计划视图的功能详解