Russian Qt Forum
Ноябрь 22, 2024, 08:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как избавиться от импорта msvcrt.dll на MinGW?  (Прочитано 24552 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Декабрь 11, 2009, 22:54 »

.lib-файлы и .a-файлы все это статические библиотеки. Просто ".lib" - стандартное виндозное расширение для них
Например, у Вас на Вындоуз MSVC подключена kernel32.lib - так что, весь код kernel у Вас статически в exe файле? Улыбающийся А если посмотреть тот же lib файл то можно увидеть имена dll файлов. Простота и ясность (как Вы хотели) не есть стиль Микрософт:)
Записан
spectre71
Гость
« Ответ #16 : Декабрь 12, 2009, 07:16 »

Qt'ишный драйвер для FireBird (fbclient_ms.lib) собирается без запинки с помощью MinGW32
Важно под чем он собран (fbclient_ms.lib) - явно под mingw, а не под студией. Раширение то можно и поменять.
Я к примеру цепляю OpenSSL, соответветственно под mingw и под студию используются разные сборки библиотек.
Записан
Tonal
Гость
« Ответ #17 : Декабрь 14, 2009, 09:06 »

Я правильно понимаю, что MSVC или Багландом проги собираются именно в статическом режиме?
Если так, тогда понятно - у mingw нет в поставке статических библиотек рантайма. Он использует именно msvcr*.dll
Т.е. просто ключиками не отделаешься.

Нужно искать и собирать рантайм самому.
Исходники можно взять, например из cygwin-а или ещё какие...
Записан
Dendy
Гость
« Ответ #18 : Декабрь 14, 2009, 13:42 »

У Qt зависимость от динамических рантайм библиотек прописана потому что как минимум интерфейсы предполагают выделение экземпляров Qt-классов в клиентском коде, а уничтожение - в самой библиотеке, и наоборот. По идее при статической сборке такая проблема исчезает, хотя возможно я чего-то не знаю.
Записан
Ленин
Гость
« Ответ #19 : Декабрь 16, 2009, 09:12 »

Решил проблему следующим образом (напомню - пишу DLL под RTOS32, требовалось избавится от msvcrt.dll):
Создал def-файл в котором перечислил требуемые этой DLL стандартные Си функции;
Подсунул этот def-файл в проект под RTOS (в VS в свойствах проекта -> линкер -> инпут);
В результате в проект статически прилинковались требуемые функции и моя DLL тягает их оттуда.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #20 : Декабрь 16, 2009, 11:24 »

Это в студии, а с MinGW как?
Записан

Юра.
Ленин
Гость
« Ответ #21 : Декабрь 16, 2009, 13:26 »

Покопавшись MinGW сделал вывод что никак, поскольку libmsvcrt.a интерфейсная. Статическую найти не удалось. В итоге оставил билд проекта в MinGW как есть, т.е. в зависимостях висит msvcrt.dll. А в проекте под RTOS указал def-файлом, чтобы некоторые необходимые для DLL функции прилинковались к программе статически.
Записан
Ленин
Гость
« Ответ #22 : Декабрь 16, 2009, 17:14 »

Щас понял, что моё решение тоже не вариант, поскольку в таком виде моя длл статически линкуется к проекту при сборке (особенность RTOS32 мать её). Так что буду копать под МинГВ дальше... на предмет поиска статической либы libmsvcrt.a
Записан
Tonal
Гость
« Ответ #23 : Декабрь 22, 2009, 11:37 »

Для студии можно просто собрать всё статически и подсунуть либы из RTOS - что и описано в документации.

Для мингвы полностью статической сборки нет - т. к. для функций С рантайма используется dll-ки от MS.
Нормальный вариант - найти исходники нужных функции и включить в проект.
Или искать свободную реализацию рантайма совместимую с мингвой.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 22.