За да стартирам режим на отстраняване на грешки в Visual C++ 2005, трябва ли да предоставя свързана библиотека за отстраняване на грешки?

Имам досаден проблем с режима за отстраняване на грешки на Visual C++ 2005. Моята научна програма използва библиотека FFTW3, която е библиотека за изчисляване на трансформация на FFT. За съжаление няма официална VC++ предварително компилирана версия на библиотеката FFTW3. По-тъжно е, че компилирането на FFTW3 от изходния код с VC++ 2005 е много трудно. Официалният уебсайт на FFTW3 предоставя предварително компилиран DLL пакет, който е изграден с MinGW GCC и е в режим на освобождаване.

Мога да свържа програмата си с тези DLL файлове за версия на MinGW във Visual C++ 2005 в режим на отстраняване на грешки и освобождаване. Но програмата ми излиза веднага след стартиране, така че искам да отстранявам грешки в програмата си стъпка по стъпка. Проблемът се случи, ако натисна бутона „Debug“ в Visual C++:

'minifun.exe': Loaded 'D:\cygwin\home\minifan\debug\libfftw3f-3.dll', Binary was not built with debug information.

Въпросът ми е трябва ли да предоставя версия за отстраняване на грешки FFTW3 на VC++, за да мога да стартирам режима за отстраняване на грешки? Има ли начини да го избегна?

Проблемът е, че не мога лесно да получа версия за отстраняване на грешки и FFTW3 библиотека, компилирана от VC++.

Съжалявам за това дълго описание. Оценявам всеки принос от вас, момчета. Благодаря много!

Джон Чейн


person John Chain    schedule 21.08.2009    source източник


Отговори (2)


Най-вероятно това не е поради липсата на Debug версия на библиотеката. Това вероятно се дължи на някаква липсваща зависимост на DLL, с която се опитвате да се свържете. Изтеглете Dependency Walker и отворете DLL в него. Ще научите кои са DLL файловете, които липсват. Липсващите зависимости ще бъдат червени на цвят.

person Aamir    schedule 21.08.2009
comment
Вашето въведение ми даде повече съвети. Ще пробвам Dependency Walker. Благодаря. - person John Chain; 22.08.2009

Съобщението „Двоичният файл не е създаден с информация за отстраняване на грешки“ не е фатално. Това просто означава, че няма да можете да отстранявате грешки в него, нито да получавате точни стекове от повиквания чрез него.

person Peter    schedule 21.08.2009
comment
След като видите съобщението за грешка, режимът за отстраняване на грешки излиза незабавно. Така че не мога да отстраня грешки в нито един ред код. Имахте предвид, че можех да отстраня грешки в кода си? - person John Chain; 22.08.2009