убрать зависимость от CRT в dll - PullRequest
0 голосов
/ 26 декабря 2011

Я создаю dll на Visual Studio 2010 и использую несколько простых функций на C, таких как fprintf и fread, и по умолчанию она связывается с msvcr100.dll.

Эта DLL будет загружена в приложение, которое может использовать другую версию CRT (например, msvcr90.dll, msvcrt.dll).

Поскольку я знаю, что приложение собирается загрузить CRT до того, как загрузится моя dll, могу ли я удалить зависимость от msvcr100.dll и использовать функции C в CRT, загруженном приложением?

1 Ответ

0 голосов
/ 30 декабря 2011

В конце концов я решил построить DLL на основе самой низкой версии CRT общего знаменателя, используемой целевым приложением, msvcr90.dll.

Я сделал это с помощью набора инструментов MSVC, доступного в Visual C ++ 2008 Express (бесплатно).

Я попробовал набор инструментов mingw / gcc, который позволяет вам указать, с какой версией CRT связываться (см. mingw-rt и gcc -specs = msvcr **), тем не менее, msvcr90.dll - это сборка SxS нового стиля, поэтому я не смог правильно запустить созданный исполняемый файл.

Возможно, стоит подумать о том, чтобы полностью пропустить связывание с msvcr**.dll; см этот пост и VC/include/delayhlp.cpp.

...