|
0 / 9 / 0
Регистрация: 19.03.2020
Сообщений: 68
|
|
Что конкретно подставляется из библиотек в исходник при работе препроцессора?07.04.2020, 15:31. Показов 1111. Ответов 9
Метки нет (Все метки)
Сап, плюсач, я так и не понял, когда файл компилируется, что конкретно подставляется из библиотек в исходник при работе препроцессора? И чем отличаются include вида "???.h" и <???>. (Я знаю, что последние есть только в плюсах, а первые еще в чистом Це, мне интересно, отличаются ли они чем-нибудь).
0
|
|
| 07.04.2020, 15:31 | |
|
Ответы с готовыми решениями:
9
При работе от сети Windows XP работает нормально, а от батареи зависает конкретно и надолго Вопрос по работе препроцессора
|
|
Неэпический
|
|||
| 07.04.2020, 16:09 | |||
#include "Hideri.Kanzaki". ![]()
1
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 07.04.2020, 16:23 | |||
|
библиотека - это уже скомпилированный код. препроцессор работает задолго до компиляции. "???.h" - предполагается, что заголовок лежит рядышком.поиск организуется по принципу: сначала смотрим рядышком, если не нашлось - ищем по системным путям <???.h> - предполагается, что заголовок лежит где то по системным путям.поиск организуется по принципу: сначала смотрим по системным путям, если не нашлось - ищем рядышком <???> - предполагается, что это - стандартный заголовок.без разницы где он лежит (в системных папках среды)
1
|
|||
|
0 / 9 / 0
Регистрация: 19.03.2020
Сообщений: 68
|
||
| 15.04.2020, 03:25 [ТС] | ||
|
Добавлено через 3 минуты Я изначально подразумевал вообще все "внешние" файлы с кодом вроде Если правильно понимаю, все заголовочники встраиваются на препроцессинге, либы объединяются с ехешником при компоновке, дллки вынесены вовне, все верно?
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 15.04.2020, 11:47 | |||
|
динамически линкуемая библиотека. в терминологии майкрософт, это - самая что ни на есть настоящая библиотека. она представляет собой уже скомпилированный и слинкованный, тобишь полностью готовый к работе, законченный бинарник. .lib - библиотека в терминах только компиляторов/линкеров с++ lib не является законченным бинарником, как dll. по сути, lib - это на самом деле тупо архив из .obj при сборке exe (или dll) линкер будет извлекать из .lib объектники (.obj) и ему ещё только предстоит слинковать их в нечто единое и законченное целое. так же, на языке с++ существует такое обывательское обозначение "header-only" библиотек. под "хедер-онли" подразумевается выделенный в отдельный файл-заголовок (или в файлы) многоразовый библиотечный код. и хотя формально, заголовки - это заголовки, а не библиотеки, тем не менее библиотечный код называют библиотечным. поэтому такие заголовки так же часто называют просто "библиотеками". в результате всего этого зоопарка из терминов и слэнга, когда при общении слышишь слово "библиотека", нужно по контексту догадываться, что именно скрывается под этим словом. если у тебя проект - executable, тогда либы объединяются с экзешником при компоновке. если у тебя проект - dll тогда либы объединяются с dll при компоновке. вообще dll и exe - это итоговые продукты сборочного конвейера между ними много общего. и то, и другое содержит уже готовый к работе исполняемый бинарный код. экзешник можно просто так взять и запустить на выполнение. dll напрямую запустить нельзя (отсутствуют необходимые для этого запчасти) но можно запустить опосредованно: через другой exe (подключив к нему динамически), либо через так называемые "суррогатные процессы" - это экзешники, которые специально были разработаны, что бы подгружать и запускать различные dll. так например, в мире Windows в dll любят поселять на местожительство так называемые COM-объекты. для того что бы COM-объект начал жить/функционировать, очевидно, нужно загрузить его dll. dll не простая. она соответствуют особому стандарту dll для COM-объектов. далее можно скормить такую dll суррогатному процессу, он её запустит, и в системе станет ещё на один COM объект больше.
0
|
|||
|
|
|
| 15.04.2020, 12:35 | |
|
hoggy, а как вызвыть функцию из lib файла в рантайме
По аналогии c LoadLibrary("dll")+GetProcAddress Подскажите, очень нужно.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 15.04.2020, 13:27 | |||||||
|
ближайшая аналогия:
нужна динамическая линковка - делай dll
0
|
|||||||
|
|
|
| 15.04.2020, 14:26 | |
|
hoggy, Я специально уточнил,, что в рантайме, чтоб можно было хоть прямо в окне программы написать название библиотеки и она выполнилась.
0
|
|
|
0 / 9 / 0
Регистрация: 19.03.2020
Сообщений: 68
|
||
| 16.04.2020, 00:00 [ТС] | ||
|
0
|
||
|
2622 / 1633 / 266
Регистрация: 19.02.2010
Сообщений: 4,338
|
||
| 16.04.2020, 12:07 | ||
|
Тем более, что нужная фукция из либы может вызывать какие-то другие из той же либы (или не только из неё), т.е. надо уметь двигаться по цепочке вызовов/зависимостей. Поэтому вместо явных значений адресов в коде объектника/либы стоят некоторые "индексы". Их реальными адресами будет заменять линкер при статической компоновке (а загрузчик ОСи сделает то же самое для вызываемых из dllок функций при загрузке этих дллок в адресное пространство процесса=екзешника). Т.е. потенциальная возможность всё-таки есть - но геморная. А добавочный гемор будет из-за необходимости борьбы с ОСью (ибо надо иметь/получить права, чтобы сегмент данных, куда загружена либа или функция из неё, обозвать сегментом кода, либо чтобы перезаписывать содержимое сегмента кода, который дефолтно ридонли) и, м.б., с антивирями (которые тоже могут следить, чтобы прога не начинала исполнять данные и/или не самомодифицировалась).
0
|
||
| 16.04.2020, 12:07 | |
|
Помогаю со студенческими работами здесь
10
Есть готовый проект на asp.net 2.0 .net 4.5, ошибки при работе с одной из библиотек, нужна консультация
Исходник по работе с сетью
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|