#c #visual-studio-2010 #fftw
#c #visual-studio-2010 #fftw
Вопрос:
Я хотел бы знать, не сталкивался ли кто-нибудь с проблемами повреждения памяти при использовании предварительно скомпилированных двоичных файлов mingw fftw, связанных с проектом Visual Studio 2010. Странно то, что просто связывание библиотек fftw (сгенерированное с помощью lib / def: libfftw3-3.def, как объясняется в документе fftw) создает проблемы в моем проекте, даже если ни один из API fftw не вызывается. Что ж, я попробую скомпилировать fftw с нуля в vs 2010, как предлагает автор, но мне любопытен тот факт, что простое связывание библиотеки может вызвать побочные эффекты. Насколько я могу судить, это не похоже на проблему нашего кода на c …
Некоторые дополнительные сведения: win 32 бита, неуправляемый проект c в vs 2010
Спасибо!
Комментарии:
1. Каковы симптомы повреждения памяти?
2. Случайные повреждения кучи, ошибка в новых операторах, структурированное исключение при вызове внешних библиотек DLL
Ответ №1:
Я не знаю, что такое библиотека fftw, поэтому я не уверен, что конкретно она может делать, чтобы вызвать нестабильность. Библиотека DLL может выполнять код при его загрузке, поэтому тот факт, что вы не вызываете ее активно, не обязательно означает, что она ничего не делает.
Однако MinGW ссылается на msvcrt.dll
среду выполнения, которая распространяется вместе с системой Windows, в то время как обычная сборка с использованием среды выполнения DLL в VS 2010 будет ссылаться на MSVCRT100.DLL
. Смешивание DLL среды выполнения — это область, которая может вызывать загадочные проблемы, в частности, если выделения выполняются из одной среды выполнения и освобождаются в другой (или даже используются в другой, я полагаю, если задействована среда отладки).
Возможно, вам лучше всего попытаться перекомпилировать библиотеку fftw с помощью VS 2010 (я предполагаю, что исходный код доступен — надеюсь, его не слишком сложно перестроить с помощью MSVC).
Можно убедить VS 2010 использовать msvcrt.dll среда выполнения (Microsoft делает это), но детали неочевидны, и мои заметки находятся в другом месте.
Комментарии:
1. Обновление: похоже, что есть несколько файлов проекта VS2010, которые могут помочь вам создать библиотеку fftw с помощью этого набора инструментов: ftp.fftw.org/pub/fftw/fftw-3.2.2-libs-visual-studio-2010.zip
Ответ №2:
fftw выполняет довольно сложную генерацию кода / профилирование / таргетинг на процессор;
По-видимому, они делают это при первом запуске. Таким образом, может быть
- ошибка, которая препятствует успешному запуску первоначального профилирования (попробуйте запустить от имени администратора один раз?)
- оставшаяся конфигурация из несовместимой установки; Я предполагаю, что fftw выполнит проверку работоспособности, чтобы убедиться, что найденная конфигурация соответствует текущей архитектуре, но в случае, если что-то не так в этом процессе, вы могли бы извлечь выгоду из поиска и ручного удаления этих конфигурационных данных
Извините, я не помню подробностей (расположения)