Hello,
I am trying again without any hope, to use dll in a wondows application. It's very strange it's working with console application but not with windows apllication.
My dll code is very very simple:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
library dlltest;
{$mode objfpc}{$H+}uses
Classes
{ add your units here };function test ( ) : integer ; stdcall ;
begin
test:=1;
end ;
exports
test ;
end .
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxnext the console program wich is working, very simple: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
program testdll;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes,dynlibs
{ add your units here };
var handledll:integer;
begin
handledll:=loadlibrary('dlltest.dll');
if handledll=0 then writeln('raté') else writeln('OK');
writeln(handledll);
end.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
now the windows program:
main part:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
program testdllwindows;
{$mode objfpc}{$H+}uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms
{ add your units here }, testdllwin;begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
and the unit:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
unit testdllwin;
{$mode objfpc}{$H+}
interfaceuses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,dynlibs;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var handledll:integer;
begin
handledll:=loadlibrary('dlltest.dll');
if handledll=0 then showmessage('raté') else showmessage('OK');
end;
initialization
{$I testdllwin.lrs}end.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx and IT DOESN'T WORK, why? It is exactly the same code! More and more I think I am going to translate my code in C, because FPC seems unable to manage properly dll library.
Thanks for your help.
Michel
