Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/48: Рейтинг темы: голосов - 48, средняя оценка - 4.69
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798

Pragma link - что за зверь и для чего нужно?

24.06.2015, 12:52. Показов 10461. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обычно, когда добавляешь к проекту сторонний компонент, то в тексте юнита появляется запись наподобие
#pragma link "имя_компонента".
Если я в дальнейшем правильно указывал в свойствах проекта путь к файлам .hpp и .obj этого компонента, то почти всегда эту строчку (pragma link ...) можно было безболезненно удалять; линковщик справлялся со своей задачей. Но вот попробовал с "библиотечкой" pngimage проделать то же - и в итоге линковщик ругается на PNGImage (unresolved external от obj-файла). Хотя все пути для него в свойствах прописаны. Стоит эту строку раскомментировать - и всё ОК, - ошибок нет. Вот меня и заинтересовало, - что это за указание линковщику? на что влияет? Может кто-нибудь простыми словами объяснить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.06.2015, 12:52
Ответы с готовыми решениями:

Нужно описание исходного кода скринсейвера, т.е. где что происходит, что чему и для чего присваивается и т.д
unit unitMain; interface uses Windows, Classes, Graphics, Forms, Registry; type TfrmMain = class(TForm) procedure...

Напишите, что это и для чего нужно
stk.IsFull stk.IsEmpty stk.Pop stk.GetNum Что это всё? Как это называется? Для чего нужен каждый элемент.

Что такое событие, для чего оно нужно
Помогите разобраться, что ли Вчера пытался понять что же такое событие, для чего оно нужно, зачем ему делегат Ну и собственно вот...

15
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
24.06.2015, 14:47
Лучше документации: #pragma link вряд ли. Какие именно из приведенных там слов не являются простыми?
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
24.06.2015, 15:08  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Какие именно из приведенных там слов не являются простыми?
Спасибо, конечно. Но у меня всё, что написано не по-русски, вызывает разной степени идиосинкразию (вот как это слово)
И вообще... - надо было в своё время не английский усиленно изучать, а их к русскому приучать; больше бы толку было. А английский язык оставить, конечно, как язык "понятий" (для программирования удобно, кстати).
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
24.06.2015, 15:20
Цитата Сообщение от nick42 Посмотреть сообщение
а их к русскому приучать; больше бы толку было
Угу. Прямо сейчас. Лишь бы кому-то что-то навязать... Русский язык подавляющему большинству населения Земли неинтересен. Ибо ничего не разрабатывается, а если разрабатывается, то делается заведомо бредово (типа Глагола, прибитого гвоздями, приклеенного и забетонированного на кириллической кодировке, которая тому же большинству людей на фиг не сдалась. У тебя же нет Хинди на компьютере, и китайской кодировки тоже нет), и вообще никому не нужно. Разрабатывай ОСи, которыми будут пользоваться десятки миллионов, средства разработки под них опять же для миллионов пользователей, превосходящие западные аналоги (не уступающие не пойдут, при прочих равных программист пальцем не пошевелит перейти на другую разработку, его надо заинтересовать чем-то таким особенным, настолько превосходящим то, что есть сейчас, что я даже не знаю, можно ли вообще его чем-то заинтересовать на данный момент), пиши доки на русском, может быть, кто-то и заинтересуется языком, и начнет его изучать. А пока будь добр признать полную несостоятельность русского языка в IT и читай доки на английском.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
24.06.2015, 15:48  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
пока будь добр признать полную несостоятельность русского языка в IT и читай доки на английском
- и не подумаю. В России до сих пор, несмотря на метаморфозы, население в бОльшей мере обладает здравым смыслом и логикой, чем зомби западного мира. Только не надо думать, что я призываю к использованию ВАСИКа - я же написал, что как язык понятий, английский - вне конкурса. Но описательная часть лучше бы воспринималась на русском, как более выразительном языке. Или Вы считаете, что мир движется к использованию исключительно иконок и жестов? (так проще, безусловно...).
1
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
24.06.2015, 16:20
Цитата Сообщение от nick42 Посмотреть сообщение
- и не подумаю. В России до сих пор, несмотря на метаморфозы, население в бОльшей мере обладает здравым смыслом и логикой, чем зомби западного мира. Только не надо думать, что я призываю к использованию ВАСИКа - я же написал, что как язык понятий, английский - вне конкурса. Но описательная часть лучше бы воспринималась на русском, как более выразительном языке. Или Вы считаете, что мир движется к использованию исключительно иконок и жестов? (так проще, безусловно...).
Английский сделан международным потому, что он самый простой. И структура его простая. Русский вообще нафиг не нужен в программировании, т.к. большая часть страны, даже после школы, пишут с Ашибками.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
24.06.2015, 16:50  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
т.к. большая часть страны, даже после школы, пишут с Ашибками
О, уже логика прослеживается: "пишут с ошибками" - на фиг такой язык. Слэнг Людоедки Эллочки им в помощь. Ну ладно - пишут..., но еще и читают не внимательно, - я же дважды написал, что как ЯЗЫКУ ПОНЯТИЙ английскому в программировании - самое место.
Ну, и немного о бренном: я просто хочу понять, что то, что меня заинтересовало, не ошибка платформы Билдера. Потому что строчкой pragma link nameobjectfile я не даю линковщику ни дополнительного пути к obj-файлам, ни незнакомого имени (это имя и так прописано в hpp-файле)... . Получается - те пути, что прописаны в свойствах проекта как Library Path, написаны зря и линковщику "до лампочки"?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2015, 18:34

Не по теме:

Цитата Сообщение от nick42 Посмотреть сообщение
бОльшей мере обладает здравым смыслом и логикой, чем зомби западного мира.
Началось ...
Зимбуа и Гандурас тогда пример для подражания.



Добавлено через 4 минуты
Цитата Сообщение от Почтальон Посмотреть сообщение
И структура его простая.
И времен всего лиш 26 .

Язык становится востребован носители которого производят и покупают. А те кто ничего не производят и ничего не покупают в пролете.

Добавлено через 6 минут
Цитата Сообщение от Почтальон Посмотреть сообщение
Русский вообще нафиг не нужен в программировании, т.к. большая часть страны, даже после школы, пишут с Ашибками.
Это не отменяет документирование на русском.
Более того если вы не требуете как покупатель доку на своем языке никто ее вам не предоставит.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
24.06.2015, 21:11
Цитата Сообщение от Avazart Посмотреть сообщение
Это не отменяет документирование на русском.
С этим согласен, с документацией порой бывает тяжело.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.06.2015, 09:31  [ТС]
Аллё! теоретики!... Вопрос был о другом. Всех желающих подискутировать на темы лингвистики отсылаю к блогам Тима Керби (такой себе обозреватель RussiaToday; в своем же отечестве, как известно, пророков нет...), хотя бы его "Русский язык против английского — как Apple против Windows". Меня по прежнему интересует суть вышеозначенной строки (#pragma link ...) и ее влияние на процедуру линковки. Ссылка уважаемого volvo трактует её (в не моём переводе) ... <Директива #pragma link поручает линкеру связать указанный файл в исполняемый файл>. Мне такие простые слова ничего не прояснили.
Если я пакетом оформляю эти 4 паскалевых файла в библиотеку lib и она, разумеется, попадает в файл -bpr проекта, то линковщик всё нормально "связывает" и та строчка ему не нужна. Если же библиотека не подключена, но имеются файлы -obj, то без pragma link "связывания" не происходит. Почему? Чего я в упор не вижу?
0
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
25.06.2015, 09:42
Цитата Сообщение от nick42 Посмотреть сообщение
#pragma link
Это инфа для линковщика.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.06.2015, 10:02  [ТС]
Цитата Сообщение от SmittWesson Посмотреть сообщение
Это инфа для линковщика.
Pardon, что такая информация даёт линковщику? Как будто без этого указания он не станет связывать все необходимые модули в один исполняемый файл.
Эта вся непонятная чехарда относится пока к единственному компоненту: PNGButton (комплект pngimage из четырёх файлов: pngextra,pngimage,pnglang,zlibpas). Если я не подключаю этот компонент, а просто добавляю в unit.h строки включения #include "pngimage.hpp", #include "pngextra.hpp" и в свойствах Directories - Library Path указываю путь к файлам .obj (да даже размещаю их рядом с проектом...), то без строчки #pragma link "pngextra" этот проект не собирается. С использованием других компонентов аналогичным образом подобного не происходит (за все компоненты, естественно, не поручусь).
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.06.2015, 11:37
Цитата Сообщение от nick42 Посмотреть сообщение
Как будто без этого указания он не станет связывать все необходимые модули в один исполняемый файл.
Не станет.
К примеру не станит прилинковывать библиотеку.
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.06.2015, 11:56  [ТС]
ОК. Я немного остыл и обратил внимание, что обычно библиотеки я вручную добавляю к проекту; попробовал также вручную добавить pngextra.obj & pngimage.obj - и линковщику этого хватило. Видимо, самостоятельно он искать объектные файлы не приучен. Пока придется удовлетвориться таким объяснением.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.06.2015, 11:59
Так никакой не научен, чЁ и говорю стоит хотя бы попробовать собирать простинкий проект в консоли с мейк файлами итп что бы не возникали такие вопросы.

Тоже самое
C++
1
 #pragma comment(lib, "x.lib");
Все это специфика компилятора для указания "из исходников"
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
28.06.2015, 23:22
Цитата Сообщение от nick42 Посмотреть сообщение
просто добавляю в unit.h строки включения #include
Линковщику до твоих хедеров глубоко наплевать. Он их не видит и не слышит. С ними работает только компилятор (точнее, прекомпилятор).
Цитата Сообщение от nick42 Посмотреть сообщение
в свойствах Directories - Library Path указываю путь к файлам .obj
Ну и что? Сами то obj-файлы нигде не сказаны!
Цитата Сообщение от nick42 Посмотреть сообщение
вручную добавить pngextra.obj & pngimage.obj - и линковщику этого хватило.
Да, теперь он в курсе.
Цитата Сообщение от nick42 Посмотреть сообщение
самостоятельно он искать объектные файлы не приучен.
Естественно! Ты же в проекте указываешь все obj-файлы (неявно, как cpp, но вот тут то бюлдеру, мэйку или кому там, хватает ума подсунуть линковщику обжи)
Кстати, сгенерируй makefile для проекта и глянь на него.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2015, 23:22
Помогаю со студенческими работами здесь

1С.Программирование: для чего нужно? что необходимо знать?
для чего нужно? что необходимо знать?

Разработка приложений для Андроид. С чего начать? Что нужно изучить?
Ребят, подскажите! Хочу стать разрабом для популярной ОС Андроид, с чего начать? Что нужно изучить, где 100% безопасно можно взять...

Что такое md5? Для чего это нужно? Где используется?
Всем доброго времени суток! Что такое md5? Для чего это нужно? Где используется? Спасибо!

Oscillator Circuits / Clock Generation - что это и для чего нужно?
Oscillator Circuits / Clock Generation - что это и для чего нужно?

Что такое HT Link(Hypertransport), от чего он зависит ?
У меня программа CPU-Z показывает данный показатель на отметке 1600 MHz Процессор Athlon II x450 x3 При просмотрах многих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru