|
12 / 3 / 0
Регистрация: 12.07.2015
Сообщений: 69
|
|
Компиляция и использование DLL12.08.2018, 18:28. Показов 17303. Ответов 23
Метки нет (Все метки)
Простой, вроде-бы вопрос: как в с++ скомпилировать dll? Как его в последствии использовать? И я имею в виду компиляцию при помощи MinGW (g++.exe), а не при помощи всяких там сторонних редакторов с их непонятно как работающими компиляторами, где для компиляции dll достаточно в свойствах проекта указать, что ты компилируешь dll... Проблема как раз в том, что все гайды по dll, которые я находил, как раз и подразумевали компиляцию при помощи всяких там Visual Studio... А как это сделать из командной строки (или, в моём случае, из notepad++ и nppexec) при помощи g++.exe?
И вообще, что на самом деле представляет из себя dll? Если я буду представлять его как набор заранее скомпилированных функций, которые я смогу использовать в своей программе, если подключу dll, при этом с сохранёнными названиями функций, это будет правильно? Есть ли какой-нибудь способ узнать содержимое dll файла (какая-нибудь легковесная программа, разбирающая прямо каждый байт dll-файла? (вообще, мне бы и для exe подобная пригодилась бы, но пока и для dll хватит))
0
|
|
| 12.08.2018, 18:28 | |
|
Ответы с готовыми решениями:
23
Компиляция dll библиотеки Компиляция функции в dll на С++ Компиляция dll на win8x64 и ошибка на winXP |
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||
| 15.08.2018, 01:46 | ||||
|
Я вроде бы очень четко дал понять что именно я уточняю и по какому поводу. Всю информацию, которую я дал, легко проверить. Например тут: https://docs.microsoft.com/ru-... characters Ну хорошо, давайте поговорим про смысл. Для начала надо бы понять, что такое UCS-2. UCS-2 - это название представления юникода, которое было описано в стандарте Unicode 1.1, в котором, на минуточку, вообще не было 32-битных кодов. Т.е. на тот момент вообще во всем юникоде не было кодов, которые выходили бы за пределы 16 бит. Первая версия Windows, в которой появилась поддержка юникода, была Windows NT 3.1, и вышла она в 1993 году, между прочим всего через месяц после релиза стандарта Unicode 1.1. К чему мы тут пришли? К простому выводу: ни о какой экономии разработчики Windows думать не могли, т.к. на тот период они использовали самые передовые технологии (стандарты) в этой области и выбранные ими 16 бит для хранения юникода было полностью оправдано. Далее, в 1996 году вышел стандарт Unicode 2.0, в котором ввели UTF16 с его суррогатными парами. В это время Microsoft уже была мегакорпорацией, со всеми ее бюрократическими моментами. Как следствие, поддержку UTF16 мы увидели только в Windows 2000, а по умолчанию она стала применяться только в Windows XP. Тут сказывалась и потребность в обеспечении совместимости, т.к. потеря совместимости - это потеря клиентов. Почему оставили 16-битный вариант? Разумеется по той же причине, по которой Linux сейчас по умолчанию использует восьмибитный UTF8, а не 32-битный UTF32: легче проводить миграцию. Как видно, ничего Microsoft специально не урезал, никакие байты не экономил. Просто история и время диктовали свои правила, как и всегда. Для справки, UTF32 - был формализован только в стандарте Unicode 4.0 (2003). При этом, естественно, wchar_t существовал в стандарте С с самого начала. В том же стандарте никогда не было
Т.е. причина того, что цитата
2
|
||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,101
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 15.08.2018, 10:18 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
И еще раз процитирую стандарт:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||