C++ 编写的dll怎么导出变量

 我来答
百度网友53678dd22
2013-01-31 · TA获得超过2228个赞
知道小有建树答主
回答量:1329
采纳率:0%
帮助的人:869万
展开全部
自己写def,或者用导出宏
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
糖糖寳寳
推荐于2016-05-09 · TA获得超过6.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:92%
帮助的人:3928万
展开全部
  (1) 用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。
  (2) 用__declspec(dllexport)来声明函数
  如果使用Visual C++来创建dll,对于同样用VC创建的exe来说,调用dll没有什么问题。
  而如果用其他工具来创建的exe来调用dll,就会出现问题,因为即使不用C++编译器,Microsoft C编译器也会损害C函数。
  当用__stdcall将函数输出时,C编译器会将函数改为_func@1的形式,在这里需要在.def文件中加入EXPORTS节来输出函数:
  EXPORTS
  func
  这样,dll将用func函数名来输出函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xz宏定义
2013-01-31 · TA获得超过1029个赞
知道小有建树答主
回答量:1621
采纳率:100%
帮助的人:227万
展开全部
声明导出函数:

extern “C” __declspec(dllexport) int add(int a, int b);

其中 extern “C”为声明为C编译。由于C++编译器在编译的时候会造成其函数名的该变,在其他应用程序中导致函数不可调用,而C编译器则不会在编译后改变其函数名。这样如果用C编译的程序来调用该dll中的函数时,可能会造成找不到该函数。

__declspec(dllexport)表示该函数为DLL输出函数,即其他应用程序可以调用该函数

从dll中声明输出函数有两种方式:
(1) 用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。
(2) 用__declspec(dllexport)来声明函数

如果使用Visual C++来创建dll,对于同样用VC创建的exe来说,调用dll没有什么问题。
而如果用其他工具来创建的exe来调用dll,就会出现问题。因为即使你不用C++编译器,Microsoft C编译器也会损害C函数。
当用__stdcall将函数输出时,C编译器会将函数改为_func@1的形式。在这里需要在.def文件中加入EXPORTS节来输出函数:

EXPORTS
func
这样,dll将用func函数名来输出函数。

另一种方式是用#pragma (linker, “/exports:func=_func@1”),告诉编译器输出函数func,这种方式没有前一种好。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1070ee9
2013-01-30 · 超过17用户采纳过TA的回答
知道答主
回答量:153
采纳率:0%
帮助的人:68.6万
展开全部
你想问什么啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式