rastafarey
09-01-2009, 18:33:45
problemas para linkear un obj c++ a delphi 2007
Aqui el que produce el archivo c_obj.obj escrito y compliado en c++
c_obj.cpp
extern "C" int _stdcall suma(int a, int b);
int _stdcall suma(int a, int b) { return (a + b); }
Unidad.pas
unit Unidad;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{$L c_obj.obj}
Function suma(a, b: integer): Integer; StdCall; external;
procedure TForm2.Button1Click(Sender: TObject);
begin
Caption := IntToStr(Suma(1, 2));
end;
end.
he aqui el error
[Pascal Error] Unidad.pas(28): E2065 Unsatisfied forward or external declaration: 'suma'
Alquien sabe por que este codigo no funciona si deberiaf uncionar.
Aqui es un link a la misma pagiana de codegear jemplo (http://dn.codegear.com/article/10156#H11) donde hay un ejemplo que no funciona.
Aqui el que produce el archivo c_obj.obj escrito y compliado en c++
c_obj.cpp
extern "C" int _stdcall suma(int a, int b);
int _stdcall suma(int a, int b) { return (a + b); }
Unidad.pas
unit Unidad;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{$L c_obj.obj}
Function suma(a, b: integer): Integer; StdCall; external;
procedure TForm2.Button1Click(Sender: TObject);
begin
Caption := IntToStr(Suma(1, 2));
end;
end.
he aqui el error
[Pascal Error] Unidad.pas(28): E2065 Unsatisfied forward or external declaration: 'suma'
Alquien sabe por que este codigo no funciona si deberiaf uncionar.
Aqui es un link a la misma pagiana de codegear jemplo (http://dn.codegear.com/article/10156#H11) donde hay un ejemplo que no funciona.