DLL的export是指将DLL中的函数和数据输出到其它程式中,以供其使用。DLL的import是指使用DLL的程式引入DLL中的函数和数据。
DLL的export
DLL中包含有一个表,称为export table(以下简称ET),其中包含了DLL中可以被外部程式使用的所有函数和数据的名字。只有记录在ET中的函数和数据才可以被外部程式所使用(如果没有.DEF文件的话),其它所有没有记录在ET中的函数和数据都被视为是DLL私有的。因此,要将DLL中的函数和数据export只有两个方法:
l 为DLL创建一个.DEF文件(模块定义文件),并在build该DLL时使用这个.DEF文件。使用这种方法使你可以将函数按序号export。
l 在DLL中想要export的函数和数据定义前添加_declspec(dllexport)关键字(对于函数和变量定义,加在最前面;对于class定义,加在class关键字后),这样该函数和数据就会被添加到ET中。使用这种方法函数将按名字export。
在WINDOWS下,无论使用上述的哪一种方法,都必须要将export函数声明为_stdcall。
关于C和C++的兼容问题
如果要写C和C++兼容的DLL,因为在C和C++下使用了不同的名字修饰规则以及不同的调用约定,所以,如果DLL是用C编写和编译的,则在用于C++模块时,函数的声明前应加上extern “C”关键字,以告诉LINKER使用C外部连接(即按照C名字修饰规则在外部模块中寻找函数)
DLL的Export和Import
最新推荐文章于 2023-03-22 23:15:00 发布
DLL的Export是指将函数和数据输出给其他程序使用,而Import则是使用DLL的程序引入所需函数和数据。Export可通过.DEF文件或_declspec(dllexport)关键字实现,函数需声明为_stdcall。在C/C++兼容的DLL中,需使用extern "C"处理名字修饰。Import时使用_declspec(dllimport)关键字,并可以通过CLASS_DECLSPEC宏处理头文件的通用性。
摘要由CSDN通过智能技术生成