В качестве расширения вопроса неразрешенный внешний символ MSVC, связывающий исполняемые файлы. A
содержит класс P
с двумя функциями-членами F
и G
, а также содержит глобальный P MyP
. Я пытаюсь вызвать функции MyP.F
из исполняемого файла T
. Я, наконец, прошел часть связывания, но теперь он терпит неудачу во время выполнения с исключением.
A.cpp
struct P {
void F();
void G();
} MyP;
P::F() {
}
P::G() {
}
int main() {
MyP.F();
MyP.G();
}
T.cpp
struct P {
void F();
void G();
} MyP;
int main() {
MyP.F();
MyP.G();
}
Я могу поставить точку останова в T
в строке, где она вызывает F
в Visual Studio 2008, но когда я нажимаю кнопку для входа или выхода, я получаю исключение First-chance exception at 0xfe5ca589 in A.exe: 0xC0000005: Access reading location 0xfe5ca589
. Когда я смотрю на стек вызовов, он показывает
fe5ca589()
A.exe!G() + 0x60a6 байт
[Кадры ниже могут быть неверными и/или отсутствовать, символы для A.exe не загружены]
Оба проекта являются частью одного и того же решения Visual Studio, и A
правильно установлен как зависимость для T
и, кажется, правильно связывается, но я не могу в него вступить. Кто-нибудь знает, как заставить Visual Studio загружать символы для A
, чтобы я мог войти в него и найти ошибку? (Или если что-то смешное связано, вызывая ошибку?)