从DLL中导出函数一般有三种方法:
1 使用DEF文件,它是一个包含描述动态链接库不同属性模块语句的文本文件,如果在程序中不使用_declspec(dllexport)关键字输出DLL函数,则必须有一个DEF文件。
DEF文件中一般包含以下的语句:
NAME:主输出程序或动态链接库文件名
LIBRARY:该语句指出动态链接库的内部名字,只是连接器生成动态链接库。
DESCRIPTION:描述DLL的用途,用单引号或双引号包含。
STACKSIZE:以字节为单位设置堆栈的大小
SECTIONS:设置段属性
EXPORTS:列出DLL导出函数名和其他信息。
VERSION:给出DLL版本号
对于使用AppWizard创建的MFC DLL,AppWizard会创建一个DEF文件的框架,并自动增加到工程中,然后在DEF文件中添加用于输出的函数。如果是创建非MFC DLL,必须自己创建DEF文件,并添加到工程总。
当建立DLL时,连接器会使用DEF文件创建一个输出EXP文件和一个输入库LIB,然后连接器会利用这些输出文件建立动态链接库文件,使用动态链接库的可执行程序可以显示的连接LIB文件来使用DLL文件。
2 使用_declspec(dllexport)关键字
可以使用_declspec(dllexport)关键字从动态链接库中输出函数,数据,类或是类成员,使用该关键字就不再使用DEF文件。
当要从动态链接库中输出函数时,_declspec(dllexport)关键字必须放置在输出变量的前面,当建立一个新的动态链接库文件时,一般会创建一个包含输出函数原形或函数类的头文件,然后再头文件中加上_declspec(dllexport)关键字声明,在使用上述的动态链接库的输出函数时,就可以利用_declspec(dllimport)关键字来声明使用的Dll输出函数,然后可以直接使用这些函数。
3 针对MFC扩展函数,它使用AFX_EXT_CLASS宏来导出类。
MFC扩展DLL使用AFX_EXT_CLASS宏输出类,而使用扩展DLL的应用程序也使用该宏输入类。
1 使用DEF文件,它是一个包含描述动态链接库不同属性模块语句的文本文件,如果在程序中不使用_declspec(dllexport)关键字输出DLL函数,则必须有一个DEF文件。
DEF文件中一般包含以下的语句:
NAME:主输出程序或动态链接库文件名
LIBRARY:该语句指出动态链接库的内部名字,只是连接器生成动态链接库。
DESCRIPTION:描述DLL的用途,用单引号或双引号包含。
STACKSIZE:以字节为单位设置堆栈的大小
SECTIONS:设置段属性
EXPORTS:列出DLL导出函数名和其他信息。
VERSION:给出DLL版本号
对于使用AppWizard创建的MFC DLL,AppWizard会创建一个DEF文件的框架,并自动增加到工程中,然后在DEF文件中添加用于输出的函数。如果是创建非MFC DLL,必须自己创建DEF文件,并添加到工程总。
当建立DLL时,连接器会使用DEF文件创建一个输出EXP文件和一个输入库LIB,然后连接器会利用这些输出文件建立动态链接库文件,使用动态链接库的可执行程序可以显示的连接LIB文件来使用DLL文件。
2 使用_declspec(dllexport)关键字
可以使用_declspec(dllexport)关键字从动态链接库中输出函数,数据,类或是类成员,使用该关键字就不再使用DEF文件。
当要从动态链接库中输出函数时,_declspec(dllexport)关键字必须放置在输出变量的前面,当建立一个新的动态链接库文件时,一般会创建一个包含输出函数原形或函数类的头文件,然后再头文件中加上_declspec(dllexport)关键字声明,在使用上述的动态链接库的输出函数时,就可以利用_declspec(dllimport)关键字来声明使用的Dll输出函数,然后可以直接使用这些函数。
3 针对MFC扩展函数,它使用AFX_EXT_CLASS宏来导出类。
MFC扩展DLL使用AFX_EXT_CLASS宏输出类,而使用扩展DLL的应用程序也使用该宏输入类。