在VC++调试器上计算表达式时,为什么会出现"成员函数不存在"错误?

Ped*_*ino 7 c++ debugging visual-c++

MyClass::myMethod()在另一个DLL上有一个静态方法MyDll.dll.在我的代码中,我调用此方法,它编译并运行正常.

但是当我MyClass::myMethod()在即时窗口(或观察窗口)中尝试时,我总是得到:

MyClass::myMethod()
CXX0052: Error: member function not present
Run Code Online (Sandbox Code Playgroud)

这是为什么?

更新:我发现当我使用上下文运算符时,它可以工作:

{,,MyDLL}MyClass::myMethod()
Run Code Online (Sandbox Code Playgroud)

我不确定为什么需要它,所以我要稍等一下,看看是否有人有一个很好的解释.

更新2:我被要求提供更多信息.不幸的是,我所描述的几乎就是我所拥有的一切.这是第三方代码.该方法驻留在不同的DLL上,声明如下:

class MyClass
{
 public:
 // ...
 _declspec(dllimport) static const char *getDirectory(void);
}
Run Code Online (Sandbox Code Playgroud)

它被调用如下:

MyClass::getDirectory ()
Run Code Online (Sandbox Code Playgroud)

我没有消息来源.它是在VC++ 9下的Debug模式下编译的.

Ped*_*ino 2

好吧,我不知道为什么,但是调试器不够智能,无法知道该类位于另一个 DLL 中,因此您必须使用上下文运算符明确告诉它:

{,,MyDLL}MyClass::myMethod()
Run Code Online (Sandbox Code Playgroud)