我有一個靜態方法,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