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