Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028

Как подключить к проекту чужой ехе-шник в качестве dll?

09.03.2011, 01:51. Показов 2208. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим, чужую dll-ку к своему проекту я подключить могу.
Сейчас у меня имеется некая программа, ехе-шник, в котором есть экспортные функции, к которым я хочу обратиться. Причем, эта прога должна быть запущена.
В какую сторону копать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2011, 01:51
Ответы с готовыми решениями:

Как подключить DLL к моему проекту и обращаться к драйверу?
Есть мой проект и есть COM-объект (драйвер контроллера) в DLL отдельно (CmdDrv.dll). Как подключить DLL к моему проекту и обращаться к...

Как сохранить настройки программы в ехе-шник?
Сохранить какие-либо настройки в реестр либо ini-файл затруднений не вызывают. Но, реестр трогать(засорять) своей прогой вообще не хочу,...

Как подключить dll на C# к проекту (dll) на С++
Подскажите, пожалуйста, как подключить dll на C# к проекту (dll) на С++. В интернете много примеров, где показаны примеры по подключению...

1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
09.03.2011, 06:55
Лучший ответ Сообщение было отмечено +1 как решение

Решение

ходят слухи, что можно сделать что-нибудь типа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <windows.h>
__declspec(dllexport) void Check(char * Capt, char * Mess)
{
  MessageBox(0, Mess, Capt, SW_SHOW);
}
void main()
{
  HMODULE h;
  void (*foo)();
  if ((h = LoadLibrary("test.exe")) 
    && (foo = (void (*)()) GetProcAddress(h, "'SomeDllFunction")))
      foo(some_params);
Экспортирование функций из модуля - это предоставление возможности другим модулям вызывать их по имени/ординалу. Экспортируются функции из экзешника (речь не про расширение файла .exe, а про признак экзешника в PE-заголовке) точно так же, как из dll.
Но чтобы иметь возможность поюзать эту функцию, модуль с ней должен быть подгружен в адресное пространство процесса.
Вот здесь и разница. Единственный экзешник нормально может быть загружен только один раз - при старте процесса самой Windows. DLL загружаются с помощью LoadLibrary(Ex) в любом количестве. Можно тем же способом загрузить и любое количество экзешников, но они будут грузиться как т.н. "data-file", т.е. безо всякой настройки, в которые входят выполнение инициализационного кода в библиотеке (а EXE - не DLL и в нём нету такого кода), загрузка явно связанных DLL, перечисленных в разделе импорта, настройка адресов импортируемых фукнций и релокация кода самой библиотеки, если она была загружена не по тому адресу, на который была рассчитана при линковке. Расписывать это подробно не буду, скажу лишь, что рассчитывать на неглючный вызов функций из загруженного таким образом экзешника не стоит. Ну, вызов
C++
1
2
3
4
int func()
{
  return 3;
}
скорее всего будет нормально отработан (и то, не факт); более сложные функции, использующие статические переменные или вызовы других функций практически 100% нельзя вызывать.
пример не мой, источник не помню.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.03.2011, 06:55
Помогаю со студенческими работами здесь

Как подключить DLL к проекту?
Всем привет! У меня тмкой вопрос. Есть API для управления цифровой камерой, подключаемой к PocketPC. Я пришу прогу на ВБ, которая...

Как подключить dll к проекту?
Ребят помогите пожалуйста, если сможете а то я уже 3 дня долбаюсь чет никак не могу разобраться с этими dll. вот я написал код dll-ки ...

Как подключить dll к проекту
Вопрос кажется простой, но застрял... (первый опыт с vb.net) Есть SnmpSharpNet.dll. В примерах написано достаточно указать: ...

Как подключить DLL к проекту
Нужно подключить Dll к C# https://vk.codeplex.com/releases/view/122628 из исходников собрать не получается т.к. у меня версию 2010 а...

Как подключить DLL к проекту
Написал курсовую и препод дал задание сделать DLL к проекту, все методы в отдельном классе, сделав отдельный проект я создал DLL отдельного...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru