powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подключение исполняемого файла вместо библиотеки
19 сообщений из 19, страница 1 из 1
Подключение исполняемого файла вместо библиотеки
    #33795017
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если реализация функций находится в исполняемом файле (exe), а у меня есть только заголовочный. Могу ли я подключить его к своему проекту?

Например есть библиотеки, у которых с помощью утилиты depends можно увидеть зависимость от *.exe файлов.... Как это делается?
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33795025
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Opilki_InsideЕсли реализация функций находится в исполняемом файле (exe), а у меня есть только заголовочный. Могу ли я подключить его к своему проекту?

Например есть библиотеки, у которых с помощью утилиты depends можно увидеть зависимость от *.exe файлов.... Как это делается?
точно также как и dll через LoadLibrary
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33795045
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если использовать явное подключение? Что писать в Makefile'e?
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33795051
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Opilki_InsideА если использовать явное подключение? Что писать в Makefile'e?

вернее при неявном... т.е. не в run-time
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33795054
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Opilki_InsideА если использовать явное подключение? Что писать в Makefile'e?
но явному подключению нужен файл *.lib вроде, который создается только для dll, поэтому, скорее всего, никак явно exe не подключишь, для этого и есть dll
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33796534
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum Opilki_InsideА если использовать явное подключение? Что писать в Makefile'e?
но явному подключению нужен файл *.lib вроде, который создается только для dll, поэтому, скорее всего, никак явно exe не подключишь, для этого и есть dllДа, статическую линковку без lib сделать нельзя. А вот то что lib только для dll это враки :)
Зависит от линкера кончено, но вот например link из VC если получает на вход объектник с declspec(dllexport) и/или def-файл, по умолчанию делает lib даже для exe.
Для других линкеров библиотеку можно запросить специальными ключами.

Но если есть только один exe без lib - тогда можно сделать болвана exe с экспортом нужных функций. Стираешь болвана, а библиотеку используешь.
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33797963
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Cerebrum Opilki_InsideА если использовать явное подключение? Что писать в Makefile'e?
но явному подключению нужен файл *.lib вроде, который создается только для dll, поэтому, скорее всего, никак явно exe не подключишь, для этого и есть dllДа, статическую линковку без lib сделать нельзя. А вот то что lib только для dll это враки :)
Зависит от линкера кончено, но вот например link из VC если получает на вход объектник с declspec(dllexport) и/или def-файл, по умолчанию делает lib даже для exe.
Для других линкеров библиотеку можно запросить специальными ключами.

Но если есть только один exe без lib - тогда можно сделать болвана exe с экспортом нужных функций. Стираешь болвана, а библиотеку используешь.

А что значит сделать болвана? И как? т.е. написать небольшой exe самому с пустыми функциями?
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33799019
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно.

Хотя например у Borland есть implib, которая и из готового dll/exe создаст lib с экспортируемыми функциями. Только с VC полученная lib может быть несовместима.
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33799069
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikkТолько с VC полученная lib может быть несовместима
есть конвертор

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33814500
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабас
LelikkТолько с VC полученная lib может быть несовместима
есть конвертор

Posted via ActualForum NNTP Server 1.3

а чем ковертировать? правда я пока implib у себя не нашел...
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33814519
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Opilki_Insideа чем ковертировать?
Еще на всякий случай поясняю, о чем речь: допустим есть какая-то .dll-ка, она экспортирует функции. Если она "создана" на Visual C++ и с ней идет файл .lib (библиотека импорта), то для использования этой .dll в проекте на C++ Builder имеющийся .lib (как он уже есть) - обычно не канал, но можно было создать новый .lib, в формате понимаемом Borland C++ (делается это с помощью утилиты implib)
http://forum.ru-board.com/topic.cgi?forum=33&topic=4297&start=180
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33814994
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Opilki_Insideправда я пока implib у себя не нашел...Если у тебя VС то и не найдешь. Нету implib для COFF-библиотек, оно есть только для OMF-библиотек. Для COFF (то есть для VC) самое надежное делать болвана.
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33815639
a_s_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LoadLybrary это конечно чорошо:) Но во всякой бочке мёда своя ложка ...
1. Мне так и не удалось через LoadLibrary загрузить экзешник целиком. Грузится только pe заголовок. Ну это так, просто руки кривые, наверное.
2. В "обычных" ехе нет релоков, а следовательно при загрузки по адресу отличному от ImageBase(а это при LoadLibrary произойдёт наверняка), код будет неработоспособным.
3. (Проверить так и не смог). При LoadLibrary вызывается DllEntry = EntryPoint, при загрузке ехе через LoadLibrary, он по идее должен просто запуститься и мирно умереть(если он конечно не базонезависим:), или если у него не окажется релоков).

Можно конечно загрузить с флагом LOAD_LIBRARY_AS_DATAFILE, мы получим нормальный образ, но опять же без релоков сложно что-нибудь поделать.

Т.о. если нет релоков ,то самое простое по-моему, рипнуть нужные ф-ии.
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33816225
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Opilki_InsideЕсли реализация функций находится в исполняемом файле (exe), а у меня есть только заголовочный. Могу ли я подключить его к своему проекту?


Если эта функция из .exe экспортируется.
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33816881
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_s_dLoadLybrary это конечно чорошо:) Но во всякой бочке мёда своя ложка ...
1. Мне так и не удалось через LoadLibrary загрузить экзешник целиком. Грузится только pe заголовок. Ну это так, просто руки кривые, наверное.
2. В "обычных" ехе нет релоков, а следовательно при загрузки по адресу отличному от ImageBase(а это при LoadLibrary произойдёт наверняка), код будет неработоспособным.
3. (Проверить так и не смог). При LoadLibrary вызывается DllEntry = EntryPoint, при загрузке ехе через LoadLibrary, он по идее должен просто запуститься и мирно умереть(если он конечно не базонезависим:), или если у него не окажется релоков).

Можно конечно загрузить с флагом LOAD_LIBRARY_AS_DATAFILE, мы получим нормальный образ, но опять же без релоков сложно что-нибудь поделать.

Т.о. если нет релоков ,то самое простое по-моему, рипнуть нужные ф-ии.

Если из exe экспортируются функции то там появляется .reloc
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33820623
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Да, статическую линковку без lib сделать нельзя.


Одну враку опровергаешь, другую тут же создаешь.

Есть .def файл, в нем можно указать линкеру как и откуда импортировать функцию. *.lib при этом уже не нужен.
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33822577
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЕсть .def файл, в нем можно указать линкеру как и откуда импортировать функцию. *.lib при этом уже не нужен.нуууу.... в принципе можно, но я так редко это использую что забыл уже нафиг :)
И насколько я помню если использовать def/IMPORT нельзя указывать тип стека и список параметров для импортируемой функции. Линкер не будет это контроллировать. Прийдется доверять собственным заголовочным файлам.
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33921268
mdaemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Есть .def файл, в нем можно указать линкеру как и откуда импортировать функцию. *.lib при этом уже не нужен.

А как этот .def прицепить, чтобы его Билдер видел?
Пишет unresolved external 'mysql_init' referenced from.....

Help, please!
...
Рейтинг: 0 / 0
Подключение исполняемого файла вместо библиотеки
    #33921580
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdaemon MasterZiv
Есть .def файл, в нем можно указать линкеру как и откуда импортировать функцию. *.lib при этом уже не нужен.

А как этот .def прицепить, чтобы его Билдер видел?
Пишет unresolved external 'mysql_init' referenced from.....

Help, please!
До 6-й версии можно было через макрос USEDEF
В 6-й наXMLили: - Project\Add to Project и выбираем нужный def.
При этом он добавляется в bpr:
<PROJECT>
<MACROS>
....
<DEFFILE value="yourdeffile.def"/>
...

USEDEF в 6-ке:
#define USEDEF(FileName) \
extern PACKAGE DummyThatIsNeverReferenced
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подключение исполняемого файла вместо библиотеки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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