我有一个带有一些静态成员函数的类。假设类B
,该类有一个基类,该类来自第三方库,例如A。现在,类A
已用dllimport
声明,并用mingw
可以毫无问题地构建sharedlibs或该类。该构建在显然不需要处理导入/导出内容的其他平台上运行良好。
// 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文件。
关于c++ - dllimport或dllexport用于使用基类dllimport进行类声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23854842/