在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相关推荐

  1. extern C __declspec(dllexport) __declspec(dllimport) 和 def

    前面的extern "C"  __declspec(dllexport)  __declspec(dllimport)都是用于函数或者变量,甚至类的声明的(可以把extern &q ...

  2. 关于c++动态库的dllexport和dllimport

    先推荐一款比Microsoft Coplilot更好用的辅助编程工具--Cursor, 一款基于GPT4的新一代辅助编程神器--Cursor,官网介绍说是与OpenAI合作并且基于GPT4.自己体验了 ...

  3. C++中#ifndef XXX_H #difine XXX_H解析及dllexport、dllimport用法示例

    在学习C++的过程中,我们经常发现在头文件前部有一些标识符定义,比如: //示例1:#ifdef CREATEDELL_API_DU #else #define CREATEDELL_API_DU _ ...

  4. 【转】extern “C“和__declspec(dllexport)以及__declspec(dllimport) 和def的简单解析

    转自:https://blog.csdn.net/xupan_jsj/article/details/9028759 前面的extern "C"  __declspec(dllex ...

  5. 再写dll 关于declspec(dllexport)和declspec(dllimport)

    使用api 要先懂得怎么使用dll文件: 1.新建一个常规dll //dll.h #ifndef DLL_H #define DLL_H #ifdef DLL_EXPORTS #define DLLE ...

  6. extern C和__declspec(dllexport)以及__declspec(dllimport) 和def的简单解析

    前面的extern "C"  __declspec(dllexport)  __declspec(dllimport)都是用于函数或者变量,甚至类的声明的(可以把extern &q ...

  7. dllimport和dllexport作用与区别

    我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法.当然,如果你的DLL里全是C++的类的话 ...

  8. dllexport, dllimport 官方文档翻译

    一 dllexport, dllimport Microsoft Specific The dllexport and dllimport storage-class attributes are M ...

  9. 不能定义声明dllimport_在 C++ 类中使用 dllimport 和 dllexport

    在 C++ 类中使用 dllimport 和 dllexportUsing dllimport and dllexport in C++ Classes 11/04/2016 本文内容 Microso ...

最新文章

  1. 《ZEMAX光学设计超级学习手册》一一2.6 本章小结
  2. CUDA安装及配置:Windows 7 64位环境
  3. 回过头来看对象的四种状态强软弱虚引用的理解
  4. 神经网络入门(最通俗的理解神经网络)
  5. 基于AcrGIS平台实现三维场景下的积水效果动态模拟
  6. httplib 和 httplib2区别之 gzip解压
  7. ITK:向二进制图像添加噪声
  8. Syntax error, parameterized types are only available if source level is 1.5
  9. colspan会影响内部单元格宽度失效_电感失效分析
  10. mysql 5.7 延迟同步_MySQL5.6升级5.7时出现主从延迟问题排查过程
  11. 神奇的 SQL 之 ICP → 索引条件下推
  12. Retrofit请求数据对错误以及网络异常的处理
  13. Chess DP 思维题
  14. @程序员,如何花式构建线程?
  15. Ubuntu Touch未来支持对用户数据加密
  16. webService(一)开篇
  17. c语言什么是关键字,c语言关键字是什么
  18. 腾讯X5WebView集成使用
  19. alexa工具条下载安装图解(支持51CTO的发展)
  20. Ubuntu安装USB无线网卡驱动

热门文章

  1. 熟悉linux开发环境_熟悉但“新”的分析开发方式
  2. xshell如何传输文件
  3. 探索优傲机器人|UR3在汽车零部件行业工件孔洞干燥作业的应用
  4. Meta利用视觉信息来优化3D音频模型,未来将用于AR/VR
  5. abb机器人负载配置设定_ABB机器人【-配置设定】大全---人手一份-建议永久收藏!...
  6. VHDL语言入门帮助
  7. Android P中的AVB校验(二)
  8. Linux文件系统功能和作用详解
  9. 《看聊天记录都学不会C语言?太菜了吧》(4)零基础的我原来早就学会编程了?
  10. 在Windows 7下安装U871或U872,在检测组件窗口时,出现MDAC组没有安装的提示的解决办法...