WEB开发网
开发学院软件开发VC VC++动态链接库(DLL)编程深入浅出(四) 阅读

VC++动态链接库(DLL)编程深入浅出(四)

 2007-03-15 21:48:07 来源:WEB开发网   
核心提示: 图15 导出类时导出的大量符号 (+放大该图片)这些都是类的构造函数、析构函数及其它成员函数和变量经编译器处理过的符号,我们直接用__declspec(dllexport)语句声明类就导出了这些符号,VC++动态链接库(DLL)编程深入浅出(四)(4),如果我们想用.lib文件导出这些符

图15 导出类时导出的大量符号 (+放大该图片)

这些都是类的构造函数、析构函数及其它成员函数和变量经编译器处理过的符号,我们直接用__declspec(dllexport)语句声明类就导出了这些符号。

如果我们想用.lib文件导出这些符号,是非常困难的,我们需要在工程中生成.map文件,查询.map文件的符号,然后将其一一导出。如图16,打开DLL工程的settings选项,再选择Link,勾选其中的产生MAP文件(Generate mapfile)就可以产生.map文件了。

打开mfcexpenddll工程生成的.map文件,我们发现其中包含了图15中所示的符号(symbol)

0001:00000380 ?HasImage@CSXButton@@QAEHXZ 10001380 f i SXBUTTON.OBJ
0001:000003d0 ??0CSXButton@@QAE@XZ    100013d0 f  SXBUTTON.OBJ
0001:00000500 ??_GCSXButton@@UAEPAXI@Z  10001500 f i SXBUTTON.OBJ
0001:00000570 ??_ECSXButton@@UAEPAXI@Z  10001570 f i SXBUTTON.OBJ
0001:00000630 ??1CSXButton@@UAE@XZ    10001630 f  SXBUTTON.OBJ
0001:00000700 ?_GetBaseMessageMap@CSXButton@@KGPBUAFX_MSGMAP@@XZ 10001700 f  SXBUTTON.OBJ
0001:00000730 ?GetMessageMap@CSXButton@@MBEPBUAFX_MSGMAP@@XZ 10001730 f  SXBUTTON.OBJ
0001:00000770  ?Redraw@CSXButton@@AAEXXZ 10001770 f i SXBUTTON.OBJ
0001:000007d0  ?SetIcon@CSXButton@@QAEHIHH@Z 100017d0 f  SXBUTTON.OBJ
……………………………………………………………………..//省略

图16 产生.map文件 (+放大该图片)

所以,对于MFC扩展DLL,我们不宜以.lib文件导出类。

上一页  1 2 3 4 

Tags:VC 动态 链接

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接