Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.11.2010, 01:05
stil stil вне форума
Новичок
 
Регистрация: 24.11.2010
Сообщения: 91
Репутация: 41
По умолчанию проблема с dll

помогите с dll.
код формы
Код:
implementation
function SUM(n,m: integer): integer; stdcall;
external 'Project2.dll' name 'SUM';  

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var a,b,res: integer;
begin
a:=strtoint(Edit1.Text);
b:=strtoint(Edit2.Text);
res:=SUM(a,b);
Label1.Caption:=PChar(inttostr(res));
end;

код DLL
Код:
uses
  SysUtils,
  Classes;

{$R *.res}
function SUM (var n, m: integer): integer; stdcall;
begin
  result:=n+m;
end;

exports SUM;

begin
end.
выдает ошибку
Вложение 1740
Ответить с цитированием
  #2  
Старый 24.11.2010, 05:36
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

У тебя сигнатуры функций разные. Думаю, дело в этом.

Вот это работает:

Код:
library  mydll;

function SUM (n, m: integer): integer; stdcall;
begin
  result:=n+m;
end;

exports SUM name 'SUM';

begin
end.

Код:
program test;

{$APPTYPE CONSOLE}

function SUM(n,m: integer): integer; stdcall; external 'mydll.dll';  

begin
  WriteLn(sum(2,3));
  ReadLn;
end.
Ответить с цитированием
  #3  
Старый 24.11.2010, 09:41
stil stil вне форума
Новичок
 
Регистрация: 24.11.2010
Сообщения: 91
Репутация: 41
По умолчанию

мне на форму обязательно надо.
там если число любое возвращешь прога работает а если переменную то никак. Я в интренете посмотрел и по книгам код такой же
Ответить с цитированием
  #4  
Старый 24.11.2010, 10:27
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
По умолчанию

Цитата:
implementation
function SUM(var n,m: integer): integer; stdcall;
external 'Project2.dll' name 'SUM';

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var a,b,res: integer;
begin
a:=strtoint(Edit1.Text);
b:=strtoint(Edit2.Text);
res:=SUM(a,b);
Label1.Caption:=PChar(inttostr(res));
end;
Красный цвет видишь?
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #5  
Старый 24.11.2010, 22:52
stil stil вне форума
Новичок
 
Регистрация: 24.11.2010
Сообщения: 91
Репутация: 41
По умолчанию

огромное спасибо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:05.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter