C++ 如何使用包装类中定义的uu declspec(dllexport)结构导出?
是否可以在不包装的情况下导出包装类的结构(结构仅包含枚举和原语)?假设我的包装看起来像这样: workerrapper.hC++ 如何使用包装类中定义的uu declspec(dllexport)结构导出?,c++,dllexport,C++,Dllexport,是否可以在不包装的情况下导出包装类的结构(结构仅包含枚举和原语)?假设我的包装看起来像这样: workerrapper.h #ifdef TESTEXPORTDLL_EXPORTS #define TESTEXPORTDLL_API __declspec(dllexport) #else #define TESTEXPORTDLL_API __declspec(dllimport) #endif class Worker; struct JobTypeInfo; template class
#ifdef TESTEXPORTDLL_EXPORTS
#define TESTEXPORTDLL_API __declspec(dllexport)
#else
#define TESTEXPORTDLL_API __declspec(dllimport)
#endif
class Worker;
struct JobTypeInfo;
template class TESTEXPORTDLL_API std::unique_ptr<Worker>;
class TESTEXPORTDLL_API WorkerWrapper {
private:
std::unique_ptr<Worker> fWorker;
public:
WorkerWrapper();
~WorkerWrapper();
WorkerWrapper(WorkerWrapper&& aThat);
WorkerWrapper& operator= (WorkerWrapper&& aThat);
void DoJob(JobTypeInfo aTypeInfo);
};
struct JobTypeInfo
{
typedef enum
{
DoThis,
DoThat,
DoNothing
} CalcType;
CalcType sCalcType;
//... primitives
};
class Worker
{
public:
void DoJob(JobTypeInfo aTypeInfo);
};
我能在这里做什么
提前感谢。如果没有包含的方法,则导出
结构
没有任何作用——导出类
意味着导出它的所有方法及其类型信息(如果它包含vtable)
以这种方式导出workerrapper
也是有问题的,因为std::unique_ptr
不会导出。如果您没有任何内联方法(包括默认实现),它将起作用,但MSVC将为您提供
尝试只传递接口指针。虚拟析构函数是可以的,因为它们称之为适当的deallocator。如果没有包含的方法,则导出struct
什么也不做——导出类
意味着导出它的所有方法及其typeinfo
(如果它包含vtable)
以这种方式导出workerrapper
也是有问题的,因为std::unique_ptr
不会导出。如果您没有任何内联方法(包括默认实现),它将起作用,但MSVC将为您提供
尝试只传递接口指针。虚拟析构函数没有问题,因为它们称之为适当的deallocator。我只需将结构提取到它自己的头文件中即可解决此问题。我只需将结构提取到它自己的头文件中即可解决此问题