【发布时间】:2009-07-07 08:43:15
【问题描述】:
因此,为 DLL 定义导出/导入的常用(至少 VS 2005 状态)方法是:
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
class MY_API MyClass {
...
};
如果我只是将代码构建为 DLL,这将非常有用。但是,我想选择使用静态库或 DLL。现在一个明显(但很糟糕)的解决方案是复制所有代码,删除 DLL 'MY_API' 定义。现在看起来更好的方法是使用命令行开关来定义或不定义 DLL 的东西。但是在静态库的情况下,“MY_API”应该是什么?
#ifdef DLL_CONFIG
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
#else
#define MY_API // What goes here?
#endif
class MY_API MyClass {
...
};
现在假设可以做到这一点,当库的用户包含头文件时会出现问题(即他们是否必须定义“DLL_CONFIG”)?
【问题讨论】: