我在另一个DLL MyClass::myMethod()
上有一个静态方法MyDll.dll
。在我的代码中,我调用了这个方法,它编译并运行良好。
但是当我在即时窗口(或观察窗口)中尝试MyClass::myMethod()
时,我总是得到:
MyClass::myMethod()
CXX0052: Error: member function not present
为什么?
更新:我发现当我使用context operator时,它有效:
{,,MyDLL}MyClass::myMethod()
我不确定为什么需要它,所以我要稍等一下,看看是否有人有一个很好的解释。
更新2 :我被要求提供更多信息。不幸的是,我所描述的几乎就是我所拥有的一切。这是第三方代码。该方法驻留在不同的DLL上,声明如下:
class MyClass
{
public:
// ...
_declspec(dllimport) static const char *getDirectory(void);
}
,它被调用如下:
MyClass::getDirectory ()
我没有得到消息来源。它是在VC ++ 9下的Debug模式下编译的。
答案 0 :(得分:2)
好吧,我不知道为什么,但是调试器不够聪明,不知道该类在另一个DLL中,所以你必须使用context operator明确告诉它:
{,,MyDLL}MyClass::myMethod()
答案 1 :(得分:0)
这可能是因为您的静态函数是内联定义的。
我对这堂课的考试:
class myclass
{
public:
static int inlinetest()
{
return 0;
}
static int test();
};
int myclass::test()
{
return 0;
}
在我的即时窗口中给出了这个输出:
myclass::inlinetest()
CXX0052: Error: member function not present
myclass::test()
0