1
假設我有這個類:導出類(DLL)中靜態數據成員的可訪問性?
class __declspec(dllexport) MyClass
{
public:
static int Bar;
static MyOtherClass Foo;
private:
static int OtherStuff;
};
我有一些問題(我使用的是MSVC編譯器):
- 將靜態成員「酒吧」是那些進口此類客戶端訪問?
- 靜態成員「OtherStuff」是否也會被導出?如果不是,這是由於訪問修飾符
private:
? - 如果該類
MyOtherClass
不與__declspec(dllexport)
定義,我認爲這意味着警告C4251
將由MSVC編譯器發出的,但是這是否意味着變量Foo
不會給進口該類客戶機訪問?
我基本上只是在腦海中運行各種場景,試圖找出什麼是什麼,什麼是不導出(因此無法訪問)在DLL類接口靜態數據成員方面。
你可能想要構造一個測試DLL,然後運行dumpbin/exports - 這會告訴你一定發生了什麼。 – Bukes 2012-02-16 22:33:07
@Bukes是否有某種方式可以使用Dependency Walker來檢查? – 2012-02-16 22:40:49
Dependency Walker當前版本中的導出窗格將向您顯示從DLL導出的所有內容,包括變量和類。您也可以「取消裝飾符號」,從而刪除一些名稱的混亂。 – Bukes 2012-02-16 23:09:33