0 / 0 / 0
Регистрация: 01.03.2011
Сообщений: 3
1

Вызов ShowMessage из DLL в Lasarus

01.03.2011, 19:45. Показов 7659. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Переношу DLL проект с Делфи на Лазаря, столкнулся с такой проблемой. Лазарус не видит окна ShowMessage из проектов DLL, говорит Error: Identifier not found "showmessage"
. Кто нибудь знает как с этим бороться, а то я уже весь интернет облазил???

Пример кода в Делфи:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
library Project2;
 
uses
  Classes,
  Dialogs;
 
{$R *.res}
 
//------------------------------------------------------------------------------
procedure Message1();
begin
  ShowMessage('Окно сообщения');
end;
//------------------------------------------------------------------------------
Exports
 Message1;
//------------------------------------------------------------------------------
begin
end.
Тот же код в Лазаре:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
library project1;
 
{$mode objfpc}{$H+}
 
uses
  Classes, Dialogs;
  { you can add units after this }
//------------------------------------------------------------------------------
procedure Message1; export;
begin
  ShowMessage('Окно сообщения');
end;
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
//------------------------------------------------------------------------------
Exports
 Message1;
//------------------------------------------------------------------------------
begin
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2011, 19:45
Ответы с готовыми решениями:

Вызов функции из dll. Dll не определена в коде и подключается программно
Я написал простую функцию которая возвращает негатив bitmap'а Function Negative(ByVal Bmp As...

Inject dll, а также вызов функции из этой же dll
Всем привет, заинжектить dll в другой процесс получилось, но еще необходимо вызвать функцию в этой...

Вызов Dll-фий в другой Dll
не получается дернуть dll в другой dll. Подскажите, как должен происходить вызов dll1 в dll2 ? ...

Создание dll на C++ и вызов метода dll из C#.
Народ, может кто-нибудь выложить конкретный пример, как это сделать? Например есть же нативная...

5
65 / 53 / 4
Регистрация: 06.09.2010
Сообщений: 254
02.03.2011, 17:44 2
Не могу сказать, в чем проблема, но вообще-то нехорошо, когда в dll реализуются интерфейсы GUI вместо логики. Может, вам при переносе это исправить?
0
0 / 0 / 0
Регистрация: 01.03.2011
Сообщений: 3
02.03.2011, 21:11  [ТС] 3
Согласен, что использование интерфейсов в DLL не есть правила хорошего тона. В моем случае DLL - является расширением для сторонней программы и реализует как часть логики, так и недостающую часть интерфейса. По этому приходится "изобретать велосипед". Мне кажется проблема должна решаться как-то, очень просто, вопрос как именно? Lazarus очень похож на Delphi, а значит должна быть и возможность вызова окон из DLL.
0
10 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 8
09.03.2011, 23:28 4
Раз используете DLL, значит, пишете под Windows. Так?
И если не нужна (к примеру) кроссплатформенность, почему бы вместо ShowMessage не использовать что-нибудь вроде Application.MessageBox(...) или просто обёртку для виндовой MessageBox()? Оно опирается на Windows API, должно работать бы...
0
2649 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
10.03.2011, 11:11 5
Воспользуйся готовым инструментом автоматического портирования Delphi-проекта в lazarus-проект
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 1
29.09.2016, 23:50 6
Добавьте uses Interfaces
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2016, 23:50
Помогаю со студенческими работами здесь

Вызов функции DLL VB.NET в DLL C++
Как вызывать функции dll VB.NET через dll С++, которая приинжекчена к процессу проводника?

Явная загрузка .dll (Выподает "ShowMessage")
Добрый денб форум, я пытаюс загрузить .dll с явным загрузком, но когда компилирую проект то...

Вызов dll ресурсов в dll
Помогите пожалуйста, вот такого рода проблемка вышла: Есть у меня dll и есть необходимость вызвать...

Вызов dll из dll -> request example
Вызывающий код void (*dllHelloWorld) (void); //ok LPCTSTR s = L"dll.dll"; //ok HINSTANCE...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru