查看DLL 及LIB 库导出函数方法

使使用及制作DLL及LIB库文件时,经常要确认接口是否已成功导出,今天给大家介绍一个比较简的的方法:

 

以安装了VS2008开发环境为例

1. 打开Visual Studio 2008命令提示符

查看DLL 及LIB 库导出函数方法_第1张图片

2. 进入到DLL或LIB文件所在目标路径下

3. 在命令行了输命令:dumpbin /exports dll名文件名 完整路径,即可得到DLL的接口。

查看DLL 及LIB 库导出函数方法_第2张图片

如果有上图的函数名出现说明,该函数接口已被成功导出,可以被其它程序正确调用。

上面2,3步可以直接合并为:dumpbin /exports dll文件完整路径  效果一样

 

 

同样地,查看静态库的信息要用命令行来实现:

dumpbin   /LINKERMEMBER   Test.lib

 

 

 

DLL中导出函数的声明有两种方式:

1,在函数声明中加上 __declspec(dllexport) 如:

extern "C" __declspec(dllexport) int TestFuction(void)
{
   ////do anything here////
   return 0;
}

2,按说明,用DEF文件导出,如

 

 

// 
//TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的,
// 则从此 DLL 导出的任何调入
// MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
// 该函数的最前面。
//
// 例如:
//
// extern "C" BOOL PASCAL EXPORT ExportedFunction1()
// {
// AFX_MANAGE_STATE(AfxGetStaticModuleState());
// // 此处为普通函数体
// }
//
// 此宏先于任何 MFC 调用
// 出现在每个函数中十分重要。这意味着
// 它必须作为函数中的第一个语句
// 出现,甚至先于所有对象变量声明,
// 这是因为它们的构造函数可能生成 MFC
// DLL 调用。
//
// 有关其他详细信息,
// 请参阅 MFC 技术说明 33 和 58。
//

;DllTestDef.lib : 导出DLL函数

LIBRARY DllTestDef
EXPORTS
ExportedFunction1 @ 1
ExportedFunction2 @ 2

你可能感兴趣的:(PC,MFC)