簡體   English   中英

__declspec(dllexport) 嵌套類

[英]__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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM