C++ 编写的dll怎么导出变量
4个回答
展开全部
自己写def,或者用导出宏
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(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函数名来输出函数。
(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函数名来输出函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
声明导出函数:
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,这种方式没有前一种好。
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,这种方式没有前一种好。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想问什么啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询