powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Tiny C и msvcrt.dll
9 сообщений из 9, страница 1 из 1
Tiny C и msvcrt.dll
    #39386525
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После компиляции утилитки в Tiny C у нее в депенденси msvcrt.dll. Запихнуть внутрь приложения рантайм видимо нельзя, по крайней мере я не нашел как. Нужно ли распостранять программу вместе с msvcrt.dll?
Или в XP и Win10 эта dll одинакова?
Подозреваю что нет.
...
Рейтинг: 0 / 0
Tiny C и msvcrt.dll
    #39386536
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта библиотека уже часть системы, не беспокойся о ней.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Tiny C и msvcrt.dll
    #39386597
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭта библиотека уже часть системы, не беспокойся о ней.


На хабре пишут, что из-за разных версий msvcrt.dll может быть DLL hell

https://habrahabr.ru/post/236355/
...
Рейтинг: 0 / 0
Tiny C и msvcrt.dll
    #39386638
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt,

Забей.

TinyC один из немногих компиляторов, который не имеет своей libc.
Под Windows он использует системную.

Найти альтернативную libc под Windows, в отличие от *nix, сложно.
Но в принципе, можно. Особенно, если нужно только пару функций.

TinyC умеет статически линковаться только с ELF, потому взять от другого компилятора тоже не получится.
...
Рейтинг: 0 / 0
Tiny C и msvcrt.dll
    #39386778
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltНа хабре пишут
На хабаре пишут много всякой чуши. Лично я не воспринимаю этот сайт всерьёз.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Tiny C и msvcrt.dll
    #39386786
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может конечно на хабре и чушь пишут. Но я поиском по диску C, нашел несколько копий msvcrt.dll.
Разного размера и с разным количеством экспортируемых функций. И поэтому опасаюсь, что приложение слинкованное
с одной версией msvcrt.dll, вполне может не заработать с более старой, в которой каких-то функций не окажется.
...
Рейтинг: 0 / 0
Tiny C и msvcrt.dll
    #39386848
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltМожет конечно на хабре и чушь пишут.

Хабр не читай. Очень низкий тех. уровень порой.
Есть отдельные хорошие статьи, но они как правило либо переводные, либо дублируются в хабр.

Короче, хабр ацтой скруль рулит.
rsdn.org очень сильный в плане C++.
...
Рейтинг: 0 / 0
Tiny C и msvcrt.dll
    #39417818
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt, имейте в виду, что printf из msvcrt.dll скорее всего не умеет делать вещи, которые описаны в стандарте C99, например:
* %zu для вывода size_t
* %a для вывода double 16-ричными цифрами
Видимо поэтому MinGW кладёт в сгенерированный .exe-файл свой printf (который умеет %zu и %a), а не пользуется printf из msvcrt.dll, который он использует в качестве стандартной C-шной библиотеки.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#include <stdio.h>
#include <windows.h>

int main() {
  printf("MinGW printf:\n");
  printf("size_t: %zu\n", sizeof(int));
  printf("double in hex: %a\n", 1.5);
  printf("\n");

  // берём printf из msvcrt.dll
  HMODULE msvcrt_dll = GetModuleHandle("msvcrt.dll");
  typedef int (__cdecl * printf_fun_t)(const char* format, ...);
  printf_fun_t msvcrt_dll_printf = reinterpret_cast<printf_fun_t>(GetProcAddress(msvcrt_dll, "printf"));
  (*msvcrt_dll_printf)("msvcrt.dll printf:\n");
  (*msvcrt_dll_printf)("size_t: %zu\n", sizeof(int));
  (*msvcrt_dll_printf)("double in hex: %a\n", 1.5);

  return 0;
}

Вывод на консоль (MinGW 4.7.1, Windows 7 (с более/менее современным msvcrt.dll)):
Код: sql
1.
2.
3.
4.
5.
6.
7.
MinGW printf:
size_t: 4
double in hex: 0xcp-3

msvcrt.dll printf:
size_t: zu
double in hex: 0x1.800000p+0

И кстати видно, что %a -- мутный формат, потому что мантисса пишется 16-ричными цифрами, а степень -- для 2 (хотя логичнее было бы для 16):
0xcp-3 = c 16 *2 -3 = 1100 2 *2 -3 = 1.100 2 *2 0 = 1.5 10
0x1.800000p+0 = 1.8 16 *2 +0 = 0001.1000 2 *2 0 = 1.5 10

MasterZivКороче, хабр ацтой скруль рулит.
rsdn.org очень сильный в плане C++.На habrahabr.ru модераторы не участвуют в обсуждениях. А вот на sql.ru и rsdn.org -- участвуют, и некоторые откровенно самоутверждаются (не вас имею в виду).
...
Рейтинг: 0 / 0
Tiny C и msvcrt.dll
    #39417827
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭта библиотека уже часть системы, не беспокойся о ней.



Ну, как сказать, какая версия и какая система...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Tiny C и msvcrt.dll
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]