Пытаюсь скомпилировать программу написанную для lazarus под windows в lazarus для linux.
И там имеются потоки.
Под win запускается все замечательно.
А вот под linux..
Вобщем имеется следующий код
type
TThread1 = class(TThread)
public
procedure Execute; override;
end;
var
Form1: TForm1;
thread1:tthread1;
implementation
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
thread1:=tthread1.Create(false);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
thread1.Terminate;
end;
procedure TThread1.Execute;
begin
while not Terminated do
begin
integrate;
end;
end;
при нажатии на button1 -вызывается следующая ошибка..
project project1 raised exception class 'runerror(232)'
нашел вроде бы решение этой проблемы в
http://wiki.lazarus.freepascal.org/Laza ... _error_232
где говорится следующее
The complete error message is:
This binary has no thread support compiled in.
Recompile the application with a thread-driver in the program uses
clause before other units using thread.
Runtime error 232
Solution: Add cthreads as first unit to the uses clause of your main program, usually the .lpr-file.
Но это у меня уже было прописанно в файле lpr
я так понимаю вот так
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms
{ you can add units after this }, Unit1, LResources, ComplexMathLibrary;
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
begin
{$I project1.lrs}
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Может еще что-то надо ?
Добавлено спустя 39 минут 4 секунды:
к счатью решение тоже нашлось в lazarus bugtracker
вообщем в lpr нужно прописать еще 2 строчки:
{$DEFINE UNIX}
{$DEFINE UseCThreads}
-----------------------------------------------------------
program project1;
{$mode objfpc}{$H+}
{$DEFINE UNIX}
{$DEFINE UseCThreads}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms
{ you can add units after this }, Unit1, LResources, ComplexMathLibrary;
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
begin
{$I project1.lrs}
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.