如何输出MFC DLL类函数
1个回答
推荐于2016-09-18
展开全部
(1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。如握物
(2)静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。
动态链接库的分类:Visual C++支持三种DLL,它们分别是:
(1)Non-MFC DLL(非MFC动态库):
非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC编写的应用程序所调用;
(2)MFC Regular DLL(MFC规则DLL)皮孝:
MFC规则DLL 包含一个继承自CWinApp的类,但其无消息循环;
(3)MFC Extension DLL(MFC扩展DLL):MFC扩展DLL采用渣液MFC的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。
2、 创建一个DLL
2.1 非MFC的DLL
2.1.1声明导出函数:
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)来声明函数
(2)静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。
动态链接库的分类:Visual C++支持三种DLL,它们分别是:
(1)Non-MFC DLL(非MFC动态库):
非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC编写的应用程序所调用;
(2)MFC Regular DLL(MFC规则DLL)皮孝:
MFC规则DLL 包含一个继承自CWinApp的类,但其无消息循环;
(3)MFC Extension DLL(MFC扩展DLL):MFC扩展DLL采用渣液MFC的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。
2、 创建一个DLL
2.1 非MFC的DLL
2.1.1声明导出函数:
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)来声明函数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询