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

Использование DLL без header

19.01.2014, 13:43. Показов 2745. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть dll, но она распространяется без header.

с помощью impdef сгенерировал def файл и увидел функции:

LIBRARY TMS.DLL

EXPORTS
DllCanUnloadNow @16 ; DllCanUnloadNow
DllGetClassObject @17 ; DllGetClassObject
DllRegisterServer @15 ; DllRegisterServer
DllUnregisterServer @14 ; DllUnregisterServer
tms_CloseApp @3 ; tms_CloseApp
tms_Decrypt @4 ; tms_Decrypt
tms_DecryptCustom @1 ; tms_DecryptCustom
tms_GetAPIVer @8 ; tms_GetAPIVer
tms_GetDeviceID @7 ; tms_GetDeviceID
tms_GetInfo @11 ; tms_GetInfo
tms_GetLastMsg @13 ; tms_GetLastMsg
tms_GetProdVer @9 ; tms_GetProdVer
tms_GetStatus @6 ; tms_GetStatus
tms_GetStatusCustom @2 ; tms_GetStatusCustom
tms_SendFeedback @10 ; tms_SendFeedback
tms_SetInfo @12 ; tms_SetInfo
tms_Uninstall @5 ; tms_Uninstall
В коде пытаюсь делать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
typedef String __cdecl (*dll_func)();
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
dll_func pShowSum = NULL;
 
HMODULE hDLL = LoadLibrary(UnicodeString("tms.dll").c_str());
 
if (!hDLL) {
  ShowMessage("Невозможно загрузить tms.dll");
  return;
}
 
pShowSum = (dll_func)GetProcAddress(hDLL, "tms_GetDeviceID"); // обратите внимание на название функции (объяснение будет ниже)
 
if (!pShowSum) {
  ShowMessage("Невозможно найти функцию tms_GetDeviceID");
  return;
}
String key = pShowSum();
}
но в key пусто, в чем может быть проблема?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.01.2014, 13:43
Ответы с готовыми решениями:

Использование header-файлов
Ситуация следующая: в файле Vector.h находится описание класса, а в файле Vector.cpp - реализация методов класса. Первый файл включен во...

Как создать header file для своей dll?
При помощи dll wizard создал библиотеку. А как создать к ней заголовочный файл?

Windows I/o без Kernel32.dll и Advapi32.dll
Добрый день. Необходимо в Windows XP SP3 распечатать в стандартный поток "some text here" без прямого или косвенного использования...

7
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.01.2014, 14:53
Цитата Сообщение от hiphone Посмотреть сообщение
Здравствуйте, есть dll, но она распространяется без header.
Что именно за DLL секрет ?

Добавлено через 47 секунд
Цитата Сообщение от hiphone Посмотреть сообщение
с помощью impdef сгенерировал def файл и увидел функции:
И чЁ ? Имена ф-ций есть, а сигнатуры нет.
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
19.01.2014, 15:25  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Что именно за DLL секрет ?
Нет, не секрет: http://www.trackmysoftware.com
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
19.01.2014, 15:45  [ТС]
вот, загрузил
Вложения
Тип файла: rar tms.rar (211.5 Кб, 8 просмотров)
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.01.2014, 15:58
Без знаний о сигнатурах функций никак, поищи описание в документации (я чет доку не нашел на сайте)
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
19.01.2014, 16:13  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Без знаний о сигнатурах функций никак, поищи описание в документации (я чет доку не нашел на сайте)
http://www.trackmysoftware.com... reference/ - все, что есть
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.01.2014, 16:49
Ну как я понимаю параметры там строковые

Functions are called with stdcall calling convention.

String parameters are passed and returned using pointers to wide strings:

wchar_t* or wchar16_t* in C++
но не факт, попробуй поискать пример использования DLL
1
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
19.01.2014, 16:54  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну как я понимаю параметры там строковые



но не факт, попробуй поискать пример использования DLL
примеров нет, но это сработало:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
typedef wchar_t* __stdcall (*dll_func)();
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
dll_func pShowSum = NULL;
 
HMODULE hDLL = LoadLibrary(UnicodeString("tms.dll").c_str());
 
if (!hDLL) {
  ShowMessage("Невозможно загрузить TestDLL.dll");
  return;
}
 
pShowSum = (dll_func)GetProcAddress(hDLL, "tms_GetDeviceID"); // обратите внимание на название функции (объяснение будет ниже)
 
if (!pShowSum) {
  ShowMessage("Невозможно найти функцию tms_GetDeviceID");
  return;
}
wchar_t* key = pShowSum();
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2014, 16:54
Помогаю со студенческими работами здесь

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

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

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

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

Использование функций из DLL
Всем привет! В С++ я новичек, долго пытался разобраться, но, видимо, без помощи никак. Иммется DLLка (для работы с оборудованием и...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru