我正在将基于 ATL 的静态库转换为 DLL,并在任何使用 ATLCString
类(在 atlstr.h 中找到)的导出类上收到以下警告:
警告 C4251: 'Foo::str_' : 类 'ATL::CStringT' 需要有 dll 接口才能供类 'Foo' 的客户端使用
我正确地将Foo
类声明为通过__declspec(dllexport)
. 这是我可以安全忽略的警告还是我做错了什么?DLL 项目设置设置为与 ATL 动态链接,但这似乎没有任何区别。
例如:
#ifdef DLLTEST_EXPORTS
#define DLLTEST_API __declspec(dllexport)
#else
#define DLLTEST_API __declspec(dllimport)
#endif
// This class is exported from the DLLTest.dll
class DLLTEST_API Foo
{
public:
Foo();
CString str_; // WARNING C4251 HERE
};
此 DLL 的所有客户端也将使用 ATL。