我有一个静态方法,MyClass::myMethod()
另一个DLL,MyDll.dll
。在我的代码中,我调用了这个方法,它编译并运行正常。为什么在评估VC++调试器上的表达式时会出现“成员函数不存在”错误?
但是当我尝试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模式下编译。
难道我们看到一些代码吗? – 0xC0DEFACE 2009-06-27 01:41:43
看起来好像监视窗口不够智能,并且无法找到以这种方式运行的源代码。你有没有尝试用你自己的函数包装这个调用 - char * foo(){return MyClass :: getDir(); }?它可能以这种方式工作,因为MyClass的源代码将在编译时而不是运行时解决。 – eran 2009-06-28 08:38:32
那么,它现在有效吗? – ralphtheninja 2009-06-28 09:11:11