我有一个类,其中有一些静态成员函数。假设类B
,这个类有一个来自第三方库a的基类,现在类A
已经用dllimport
声明了,用mingw
我可以毫不费力地构建共享库或那个类。这个构建在其他平台上运行得很好,显然不需要处理导入/导出的东西。
// export and imports and properly defined.
#define IMPORT __declspec(dllimport)
#define EXPORT __declspec(dllexport)
Class IMPORT A {
public:
static staticOfA();
};
class EXPORT B : public A{
public:
...
static staticOfB()
};
现在这给了我链接dll时未定义的引用。未定义的引用错误涉及B
类的静态和非静态方法。
谁能告诉我为什么吗?
如果以上信息不充分,请询问,我可以提供。
看起来不太好。你总是需要通心粉在.h文件,因为类需要导出当你构建DLL,但需要导入当.h文件在客户端代码中使用。
标准格式为:
#ifdef BUILDING_FOO
#define EXPORTED __declspec(dllexport)
#else
#define EXPORTED __declspec(dllimport)
#endif
class EXPORTED A {
// etc..
};
并且只有在构建DLL时才定义BUILDING_FOO。
我真的不知道你打算用b类做什么。如果它真的应该被导入,那么它属于另一个DLL项目的另一个。h文件。