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

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

19.01.2014, 13:43. Показов 2755. Ответов 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
8489 / 6156 / 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
8489 / 6156 / 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
8489 / 6156 / 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
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru