Возник такой вопрос:
Как из dll библиотеки возвратить в основную программу результаты выполнения процедуры?
При выполнении функций понятно как это делать, а вот как при выполнении процедур...
			
		Модератор: Модераторы
program project2;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };
{$IFDEF WINDOWS}{$R project2.rc}{$ENDIF}
  var
  a, S: real;
  Procedure Summa(a: real);external 'project1.dll' ;
begin
 a:=7;
 Summa(a);
 Writeln('S=',S);
 readln;
end.
          library project1;
{$mode objfpc}{$H+}
uses
  Classes
  { you can add units after this };
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
 Procedure Summa(a: real);stdcall;
 var S: real;
 begin
 S:=a+1;
 end;
exports
Summa;
begin
end.   function GetS: Real; stdcal;
begin
  Result:=S;
end;Procedure Summa(a: real; var S: real);stdcall;
begin
S:=a+1;
end; ) вопрос - а зачем у тебя переменная S два раза объявляется?
 ) вопрос - а зачем у тебя переменная S два раза объявляется?
Еще при компиляции dll выводит: Ошибка отладчика. Оп, отладчик находится в нерабочем состоянии. Сохраните работу!


AlexPavel писал(а):А не скажешь, как можно объявить переменную S один раз
Padre_Mortius писал(а):В вашем случае, лучше процедуру заменить на функцию и переменную S в библиотеке убрать совсем, т.к. она поменяется на Result

Вернуться в Обучение Free Pascal
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1