Ho un metodo statico, MyClass::myMethod()
su un'altra DLL, MyDll.dll
. Nel mio codice, chiamo questo metodo, e compila e gira bene.Perché viene visualizzato un errore di "funzione membro non presente" durante la valutazione di espressioni sul debugger VC++?
Ma quando provo MyClass::myMethod()
nella finestra immediata (o finestra di controllo), ho sempre arrivare:
MyClass::myMethod()
CXX0052: Error: member function not present
Perché?
Aggiornamento: ho scoperto che quando uso il context operator funziona:
{,,MyDLL}MyClass::myMethod()
Io non sono davvero sicuro perché ce n'è bisogno, però, così ho intenzione di aspettare un po ' per vedere se qualcuno ha una bella spiegazione
Aggiornamento 2: mi è stato chiesto di fornire ulteriori informazioni. Sfortunatamente, quello che ho descritto è quasi tutto ciò che ho. Questo è nel codice di terze parti. Il metodo, che risiede su una DLL diversa, è dichiarato in questo modo:
class MyClass
{
public:
// ...
_declspec(dllimport) static const char *getDirectory(void);
}
ed è invocato in questo modo:
MyClass::getDirectory()
non ho la fonte. E 'stato compilato in modalità Debug sotto VC++ 9.
Potremmo vedere qualche codice? – 0xC0DEFACE
Sembra che la finestra di controllo non sia abbastanza intelligente e non sia in grado di localizzare la sorgente per funzionare in questo modo. Hai provato a completare questa chiamata con una funzione propria - char * foo() {return MyClass :: getDir(); }? Potrebbe funzionare in questo modo, poiché l'origine di MyClass verrebbe risolta in fase di compilazione anziché in fase di esecuzione. – eran
Quindi, funziona ora? – ralphtheninja