[英]__declspec(dllexport) on nested classes
代碼:
#ifdef BUILD_DLL
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
class MY_API A
{
public:
void some_method();
class B
{
public:
void other_method();
};
};
我是否必須將我的宏 ( MY_API
) 添加到 B 類?
我是否必須將我的宏 (MY_API) 添加到 B 類?
如果該B
類也被導出/導入(大概是這樣),那么:是的,你這樣做。
嘗試以下代碼,我們將在其中構建 DLL 並導出類:
#define BUILD_DLL
#ifdef BUILD_DLL
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
class MY_API A {
public:
void some_method();
class B {
public:
void other_method();
};
};
// Dummy definitions of the exported member functions:
void MY_API A::some_method() {}
void MY_API A::B::other_method() {}
編譯它會出現以下錯誤(MSVC,Visual Studio 2019):
錯誤 C2375:“A::B::other_method”:重新定義; 不同的聯系
如果我們簡單地將MY_APP
屬性添加到嵌套類,消息就會消失,並且代碼編譯沒有問題:
//...
class MY_API B { // Add attribute to nested class
//...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.