Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 6

Использование функций из DLL

20.02.2014, 17:23. Показов 2048. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
В С++ я новичек, долго пытался разобраться, но, видимо, без помощи никак.
Иммется DLLка (для работы с оборудованием и зарегистрированная в системе), дока к ней со всеми функциями и форма с кнопками.
С помощью меню Component - Import Component создал файлики dll_TLB.h и .cpp (а также dll_OCX.h и .cpp), и вроде подключил их к проекту (делал по книге Архангельского).
А вот как вызывать функции по нажатию на кнопку не могу понять. В книге-то все интерфейсы и прочее были известны. Хотя, подозреваю, что интерфейсы я могу узнать с помощью oleview.
Подскажите как вызвать ф-ию по нажатию на кнопку.

Использую С++ Builder 2007

Раньше писал на AutoIt - там всё это намного проще
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2014, 17:23
Ответы с готовыми решениями:

Использование функций из других .dll
Всем добрый вечер. Ребята такая просьба у меня есть дллка написанная на дельфи. Как мне ее подключить и использовать оттуда функции? На...

Просмотр функций dll
как посмотреть весь список функций и их параметров в dll??? Добавлено через 32 минуты при динамическом подключении dll из темы...

Использование dll
Здравствуйте. сделал dll // WorkedDLL.cpp: определяет экспортированные функции для приложения DLL. // #include...

6
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
21.02.2014, 05:48
Dynamic-Link Library: Теория + Практика
Использование функций из других .dll
0
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 6
21.02.2014, 12:28  [ТС]
AntonChik,
Спасибо! Почитал.
Возник вопрос - какого размера д.б. файл DLL.lib?
Просто после использования implib TestDLL.lib всего 1 кб - не мало?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::Button1Click(TObject *Sender)
{
typedef long __cdecl (*dll_func)();
 
  dll_func pShowSum = NULL;
 
  HMODULE hDLL = LoadLibraryA("TestDLL.dll");
 
  if (!hDLL) {
     ShowMessage("Невозможно загрузить TestDLL.dll");
  return;
             }
     pShowSum = (dll_func)GetProcAddress(hDLL, "_MyFunc"); // обратите название на название функции (объяснение будет ниже)
 
     if (!pShowSum) {
         ShowMessage("Невозможно найти функцию MyFunc");
     return;
     }
     else ShowMessage("можно найти функцию MyFunc");
}
И мою библиотеку невозможно найти.
Подскажите куда копать
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
21.02.2014, 12:46
AntonChik, у него не просто DLL у него COM-библиотека

Добавлено через 1 минуту
Vini37, У тебя простая DLL или COM ?
0
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 6
21.02.2014, 12:50  [ТС]
Avazart,
она COM
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
21.02.2014, 13:09
Цитата Сообщение от AntonChik Посмотреть сообщение
Dynamic-Link Library: Теория + Практика
Использование функций из других .dll
Цитата Сообщение от Vini37 Посмотреть сообщение
Avazart,
она COM
Тогда не канает, читай про COM
0
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 6
24.02.2014, 14:30  [ТС]
Ещё раз привет!
Я нашёл как эту библиотеку подключает производитель - через CreateObject.
Но при вызове функции появляется сообщение об ошибке: "Access violation at address 0047E50 in module Project.exe..."
Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <vcl.h>
#pragma hdrstop
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include <oleauto.hpp>
 
TForm1 *Form1;
Variant  ECR;
//свойства и методы драйвера
Procedure  sp("ShowProperties");
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   //ShowMessage ("!!!");
   ECR = Variant::CreateObject("AddIn.DrvFR");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnShowPropertiesClick(TObject *Sender)
{
   //ShowMessage ("!!!");
   ECR.Exec(sp);
}
Подскажите, пожалуйста, что я делаю не так
Весь проект во вложении
P.S. Библиотека зарегистрирована
Вложения
Тип файла: zip Project.zip (756.9 Кб, 1 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2014, 14:30
Помогаю со студенческими работами здесь

Использование функции из dll
Есть сторонняя библиотека XXX.dll из которой мне нужна одна функция. Вот ее прототип: bool XXX_Func(char*); Как мне в своем...

Использование картинок в DLL
Есть DLL: Main.cpp: #include &lt;vcl.h&gt; #include &lt;grids.hpp&gt; #include &quot;Function.h&quot; #pragma resource &quot;MyResource.res&quot; ...

Создание и использование dll
Всем доброго времени суток! Среда выполнения Borland Builder проблема в вызове метода класса зашитого в dll //содержание dll ...

Использование библиотеки avcodec.dll
Подскажите возможно ли использовать в Builder'e библиотеку avcodec.dll, которая требует stdint.h inttypes.h, которые не компилятся в ней и...

Использование DLL без header
Здравствуйте, есть dll, но она распространяется без header. с помощью impdef сгенерировал def файл и увидел функции: В коде...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru