C++的dllexport和dllimport

__declspec(dllexport)

声明一个导出函数,是说这个函数要从本DLL导出。提供给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。

当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类。


__declspec(dllimport)

声明一个导入函数,是说这个函数是从别的DLL导入,我要用。一般用于使用某个dll的exe中。

不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。编译器之所以能够生成更好的代码,是因为它可以确定函数是否存在于 DLL 中,这使得编译器可以生成跳过间接寻址级别的代码,而这些代码通常会出现在跨 DLL 边界的函数调用中。但是,必须使用 __declspec(dllimport) 才能导入 DLL 中使用的变量。

你可能感兴趣的:(C++的dllexport和dllimport)