Почему при оценке выражений в отладчике VC ++ появляется ошибка «функция-член отсутствует»? - PullRequest
7 голосов
/ 27 июня 2009

У меня статический метод, MyClass::myMethod() в другой DLL, MyDll.dll. В моем коде я вызываю этот метод, и он компилируется и работает нормально.

Но когда я пытаюсь MyClass::myMethod() в ближайшем окне (или окне просмотра), я всегда получаю:

MyClass::myMethod()
CXX0052: Error: member function not present

Почему это?

Обновление : я обнаружил, что когда я использую оператор context , он работает:

{,,MyDLL}MyClass::myMethod()

Хотя я не совсем уверен, зачем это нужно, поэтому подожду немного, чтобы посмотреть, есть ли у кого-нибудь хорошее объяснение.

Обновление 2 : меня попросили дать больше информации. К сожалению, я описал почти все, что у меня есть. Это в стороннем коде. Метод, который находится в другой DLL, объявлен так:

class MyClass
{
 public:
 // ...
 _declspec(dllimport) static const char *getDirectory(void);
}

и вызывается так:

MyClass::getDirectory ()

У меня нет источника. Он был скомпилирован в режиме отладки под VC ++ 9.

Ответы [ 2 ]

2 голосов
/ 29 июня 2009

Ну, я не уверен, почему, но отладчик не достаточно умен, чтобы знать, что класс находится в другой DLL, поэтому вы должны явно сказать это, используя оператор контекста :

{,,MyDLL}MyClass::myMethod()
0 голосов
/ 27 июня 2009

Это, вероятно, потому что ваша статическая функция определена как встроенная.

Мой тест с этим классом:

class myclass
{
public:
    static int inlinetest() 
    { 
        return 0; 
    }
    static int test();
};

int myclass::test()
{
    return 0;
}

дает мне вывод в моем ближайшем окне:

myclass::inlinetest()
CXX0052: Error: member function not present
myclass::test()
0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...