dllexport和dllimport
在VS中,如果要跨项目使用类或变量,就必须用到dllexport和dllimport,下面分别举例全局变量,函数和类跨项目使用。
环境准备:使用VS分别新建一个windows应用程序和DLL项目,windows应用程序项目名称为ConsoleApplication1,DLL项目名称为testExtern。
在ConsoleApplication1上右键项目属性
附加库目录加上testExtern生成dll和lib所在的目录
附加依赖项加上testExtern.lib名称
全局变量
在同一个项目中,全局变量不需要导出,extern声明一下即可:
test.cpp中定义:
int a = 100;
main.cpp中使用:
extern int a;
int main()
{cout << a << endl;
}
输出100;
在textExtern项目中定义全局变量(只有定义了导出宏时才会生成lib文件),则需要将其导出:
int _declspec(dllexport) sssss = 1000000;
在ConsoleApplication1中使用sssss这个全局变量时,则需要导入:
extern int _declspec(dllimport) sssss;
int main()
{cout << sssss << endl;return 0;
}
函数
一般在声明时导出即可:
_declspec(dllexport) void myFun();
void myFun()
{std::cout << "myFun()" << std::endl;
}
在main.cpp中包含声明的头文件,不包含头文件则需要extern并声明导入
int main()
{myFun();return 0;
}
类
在testExtern项目中ExportClass必须在定义时导出,在ConsoleApplication1中使用时必须包含其头文件
class _declspec(dllexport) ExportClass
{public:void testExportClass();
};
void ExportClass::testExportClass()
{std::cout << "textExportClass()" << std::endl;
}
main.cpp中:
#include "C:\Users\Administrator\Documents\Visual Studio 2015\Projects\ConsoleApplication1\testExtern\extern.h"
int main()
{ExportClass ex;ex.testExportClass();return 0;
}
dllexport和dllimport相关推荐
- extern C __declspec(dllexport) __declspec(dllimport) 和 def
前面的extern "C" __declspec(dllexport) __declspec(dllimport)都是用于函数或者变量,甚至类的声明的(可以把extern &q ...
- 关于c++动态库的dllexport和dllimport
先推荐一款比Microsoft Coplilot更好用的辅助编程工具--Cursor, 一款基于GPT4的新一代辅助编程神器--Cursor,官网介绍说是与OpenAI合作并且基于GPT4.自己体验了 ...
- C++中#ifndef XXX_H #difine XXX_H解析及dllexport、dllimport用法示例
在学习C++的过程中,我们经常发现在头文件前部有一些标识符定义,比如: //示例1:#ifdef CREATEDELL_API_DU #else #define CREATEDELL_API_DU _ ...
- 【转】extern “C“和__declspec(dllexport)以及__declspec(dllimport) 和def的简单解析
转自:https://blog.csdn.net/xupan_jsj/article/details/9028759 前面的extern "C" __declspec(dllex ...
- 再写dll 关于declspec(dllexport)和declspec(dllimport)
使用api 要先懂得怎么使用dll文件: 1.新建一个常规dll //dll.h #ifndef DLL_H #define DLL_H #ifdef DLL_EXPORTS #define DLLE ...
- extern C和__declspec(dllexport)以及__declspec(dllimport) 和def的简单解析
前面的extern "C" __declspec(dllexport) __declspec(dllimport)都是用于函数或者变量,甚至类的声明的(可以把extern &q ...
- dllimport和dllexport作用与区别
我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法.当然,如果你的DLL里全是C++的类的话 ...
- dllexport, dllimport 官方文档翻译
一 dllexport, dllimport Microsoft Specific The dllexport and dllimport storage-class attributes are M ...
- 不能定义声明dllimport_在 C++ 类中使用 dllimport 和 dllexport
在 C++ 类中使用 dllimport 和 dllexportUsing dllimport and dllexport in C++ Classes 11/04/2016 本文内容 Microso ...
最新文章
- 《ZEMAX光学设计超级学习手册》一一2.6 本章小结
- CUDA安装及配置:Windows 7 64位环境
- 回过头来看对象的四种状态强软弱虚引用的理解
- 神经网络入门(最通俗的理解神经网络)
- 基于AcrGIS平台实现三维场景下的积水效果动态模拟
- httplib 和 httplib2区别之 gzip解压
- ITK:向二进制图像添加噪声
- Syntax error, parameterized types are only available if source level is 1.5
- colspan会影响内部单元格宽度失效_电感失效分析
- mysql 5.7 延迟同步_MySQL5.6升级5.7时出现主从延迟问题排查过程
- 神奇的 SQL 之 ICP → 索引条件下推
- Retrofit请求数据对错误以及网络异常的处理
- Chess DP 思维题
- @程序员,如何花式构建线程?
- Ubuntu Touch未来支持对用户数据加密
- webService(一)开篇
- c语言什么是关键字,c语言关键字是什么
- 腾讯X5WebView集成使用
- alexa工具条下载安装图解(支持51CTO的发展)
- Ubuntu安装USB无线网卡驱动
热门文章
- 熟悉linux开发环境_熟悉但“新”的分析开发方式
- xshell如何传输文件
- 探索优傲机器人|UR3在汽车零部件行业工件孔洞干燥作业的应用
- Meta利用视觉信息来优化3D音频模型,未来将用于AR/VR
- abb机器人负载配置设定_ABB机器人【-配置设定】大全---人手一份-建议永久收藏!...
- VHDL语言入门帮助
- Android P中的AVB校验(二)
- Linux文件系统功能和作用详解
- 《看聊天记录都学不会C语言?太菜了吧》(4)零基础的我原来早就学会编程了?
- 在Windows 7下安装U871或U872,在检测组件窗口时,出现MDAC组没有安装的提示的解决办法...