Как изменить файл спецификаций 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

Другие вопросы по тегам