Tengo un método estático, MyClass::myMethod()
en otra DLL, MyDll.dll
. En mi código, llamo a este método, y se compila y funciona bien.¿Por qué aparece un error de "función de miembro no presente" al evaluar expresiones en el depurador de VC++?
Pero cuando intento MyClass::myMethod()
en la ventana inmediata (o la ventana de inspección), siempre me sale:
MyClass::myMethod()
CXX0052: Error: member function not present
¿Por qué?
actualización: Me he dado cuenta de que cuando se utiliza la context operator funciona:
{,,MyDLL}MyClass::myMethod()
No estoy realmente seguro de por qué se necesita, sin embargo, así que voy a esperar un poco para ver si alguien tiene una buena explicación.
Actualización 2: Me pidieron que dara más información. Desafortunadamente, lo que describí es casi todo lo que tengo. Esto es en código de terceros. El método, que reside en un archivo DLL diferente, se declara así:
class MyClass
{
public:
// ...
_declspec(dllimport) static const char *getDirectory(void);
}
y se invoca como esto:
MyClass::getDirectory()
no tengo la fuente. Fue compilado en modo Debug bajo VC++ 9.
Podríamos ver algo de código? – 0xC0DEFACE
Parece que la ventana del reloj simplemente no es lo suficientemente inteligente y no puede ubicar la fuente para que se ejecute de esta manera. ¿Has intentado ajustar esta llamada con una función propia? Char * foo() {return MyClass :: getDir(); }? Podría funcionar de esta manera, ya que la fuente de MyClass se resolvería en tiempo de compilación en lugar de en tiempo de ejecución. – eran
Entonces, ¿funciona ahora? – ralphtheninja