Несколько ЭЛТ, дающих сегфо - PullRequest
1 голос
/ 20 июня 2011

Справочная информация: я создаю плагин для большой платформы моделирования.Я компилирую DLL с использованием Visual Studio C ++ 2010.

После долгих ошибок и поисков в Google я считаю, что у меня возникла проблема, связанная с несколькими версиями CRT, связанными с моей DLL.Я получаю segfault в tidtable.c (из msvcr100.dll), в функции _CRTIMP PFLS_GETVALUE_FUNCTION __cdecl __set_flsgetvalue().Чтение этого потока (обсуждается множество проблем, но в конце упомянута эта функция), где у меня возникает идея, и если я проверяю связующую часть моего проекта, я вижу msvcr90.dll, 'msvcp100d.dll and msvcr100d.dll`.

Я использую несколько внешних библиотек, и мне удалось перекомпилировать все, кроме одной, используя VS2010.Однако последний не является открытым исходным кодом (это библиотека, принадлежащая фреймворку), и я думаю, что именно отсюда и возникла зависимость.Однако я не уверен, как я могу это проверить?

Учитывая, что я прав относительно того, откуда возникает зависимость, что я могу сделать?

1 Ответ

2 голосов
/ 20 июня 2011

Вы ссылаетесь на среду выпуска из Visual Studio 2008 и среду отладки Visual Studio 2010 ... вам не следует смешивать и сопоставлять выпуск и отладку в целом.Если вам нужен отладочный VC9, вам нужно установить Visual Studio 2008 (для безопасности установите до 2010 года)

Однако я бы, вероятно, просто перестроил все проекты и зависимости от VC10.Возможно, вам удастся избежать установки redist для VC9 , если он отсутствует в вашей системе только для выпуска.

Редактировать: Ссылка на Зависимость Walker, который неоценим для определения отсутствующих или конфликтующих зависимостей.

...