调用dll有两种方式,隐式
链接(exe加载时需要)和
显示链接(运行时
调用)
结论:想将编写的dll
文件暴露给外部使用,有三种办法;
1. 使用.def
文件
2. 使用__declspec(dllexport)
3. 使用__declspec(dllimport)【推荐】
正确编译
代码不需要使用 __declspec(dllimport),但是这样做可以让编译器
生成更优质的
代码。 编译器能够
生成更好的
代码,因为它可以确定某个
函数是否存在于 DLL 中,这使编译器
生成的
代码可以跳过在跨越 DLL 边界的
函数调用中通常存在的间接级别。 不过,必须使用 __declspec(dllimport) 来导入 DLL 中使用的变量。
官方推荐写法:这样在
生成dll的项目中使用的是dllexport,而在使用dll的项目中使用的是dllimport
#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif