C++ Windows下dll的使用
调用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