Как изменить файл спецификаций MinGW для связи с MSVCR100.dll и MSVCP100.dll?
Я использую Windows 7 и последнюю версию MinGW (gcc v4.7.2).
Моя проблема состоит в том, чтобы заставить MinGW использовать "MSVCR100" и "MSVCP100" исполняемые библиотеки DLL для простого тестового приложения.
Мой стандартный файл спецификации выглядит следующим образом:
% {mthreads: -lmingwthrd} -lmingw32% {shared-libgcc: -lgcc_s}% {! shared-libgcc: -lgcc_eh} -lgcc -lmoldname -lmingwex -lmsvcr100 -lmsvcpp100
(Дистрибутив mingw не доставляет MSVCP100.a в каталог lib, поэтому я только что создал с помощью "dumpbin" и "dlltool" мой файл "MSVCP100.a".)
Моя проблема сейчас, в случае, если я скомпилирую свое простое тестовое приложение (которое использует boost-date-time и boost-log), я получаю следующие неопределенные ссылки:
- неопределенная ссылка на `gmtime'
- неопределенная ссылка на `localtime'
Но это не должно быть возможным, так как в случае, когда я компилирую свое тестовое приложение с помощью Visual Studio 2010 и анализирую двоичный файл с помощью обходчика зависимостей, я вижу, что на dll ссылаются "MSVCR100" и "MSVCP100".
Зачем мне это нужно? Я выяснил, что мое тестовое приложение дает сбой в Windows XP, но не в системах Win7, так как функция "setlocale" в "msvcrt.dll" (v7.0.2600.5512) не является поточно-ориентированной (пожалуйста, проверьте разговор между мной и сопровождающим boost.log относительно этой проблемы здесь:
Boost-Log). Поэтому мне было любопытно, если мое тестовое приложение также будет аварийно завершено, если я скомпилирую его с Visual Studio 2010 и протестирую двоичный файл на WinXP. Я выяснил, что сбоев не происходит, поскольку Vistual Studio связывает мое тестовое приложение с "MSVCR100.dll" (и MSVCP100.dll).
Из-за некоторых ограничений невозможно перенести код моего проекта из MinGW в Visual Studio. Поэтому я попытался изменить файл спецификаций mingw, чтобы связать его с упомянутыми DLL.
Вопрос: Как можно запустить MinGW, чтобы больше не связываться с msvcrt.dll, а с msvcrt100.dll? Или в более общем плане: как запустить MinGW для использования тех же самых DLL-библиотек времени выполнения, что и Visual Studio?
Любая помощь приветствуется. Пока спасибо
Рафаэль
1 ответ
Попробуйте это с:
% {mthreads: -lmingwthrd} -lmingw32% {shared-libgcc: -lgcc_s}% {! shared-libgcc: -lgcc_eh} -lgcc -lmoldname100 -lmingwex -lmsvcr100 -lmsvcp100