Ok, sembra funzionare a dovere :D
program Threads;
{$mode objfpc}{$H+}
uses
{$DEFINE UseCThreads} // oppure togli tutti gli ifdef qui sotto
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, MainView, models
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
La soluzione dovrebbe essere quella di utilizzare esplicitamente la unit cthreads tramite {$DEFINE UseCThreads}, oppure passando -dUseCThreads al compilatore.
Questa non la sapevo, io ho sempre aggiunto il parametro "-dUseCThreads" ... ottimo a sapersi !!!
Che tu sappia, se io dovessi usare i thread in una unit che a sua volta verrebbe usata in più progetti, posso aggiungere
{$DEFINE UseCThreads}
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
direttamente nella unit o lo devo fare in ogni lpr di ogni progetto in cui userò quella unit?
Grazie, Mario
Da quello che hai scritto, credo di sapere già la risposta, ma preferisco chiederlo ugualmente, magari ho capito male io .... ma veniamo al dunque:
{$DEFINE UseCThreads}
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
se dovessi fare una unit contenente la gestione di un Thread, dovrei aggiungere le righe qui sopra nell'LPR di tutti i progetti che usano questa unit. Se le mettessi direttamente nella unit non funzionerebbe. E' corretto?
Grazie, Mario