Obj - como incluir rotinas escritas em c no fonte do Delphi com o obj

Top  Previous  Next

Primeiro voce deve "linkar" o OBJ ao seu executavel. No Delphi , isto eh

feito com a diretriz de compilacao $L. Fica, na sua unit principal, assim:

 

{$L MyOBject.OBJ}

 

Incluindo as chaves.

 

Logo depois, voce deve declarar a funcao contida em MyObject.OBJ da forma

usual. Voce precisara conhecer os parametros usados pela mesma, bem como o

tipo e a ordem em que sao passados. Voce deve incluir tambem a diretriz

PASCAL ou CDECL. Sugiro tentar primeiro com PASCAL. Ficaria assim (na secao

implementation:

 

function (Parametro1 : TipoDoParametro1, Parametro2 : TipoDoParametro2):

TipoDoRetorno; pascal;

se nao der certo, tente:

 

function (Parametro1 : TipoDoParametro1, Parametro2 : TipoDoParametro2):

TipoDoRetorno; cdecl;

caso nao seja uma funcao e sim uma procedure, tente

 

procedure (Parametro1 : TipoDoParametro1, Parametro2 : TipoDoParametro2);

pascal;

ou

 

procedure (Parametro1 : TipoDoParametro1, Parametro2 : TipoDoParametro2);

cdecl;

Se voce nao sabe quais os parametros usados pela funcao/procedure, uma

solucao seria linkar o seu OBJ num programa qualquer e disassembla-lo. Ai

pelo menos voce sabera a quantidade e o tipo de cada parametro. De qualquer

forma, para saber para que serve cada um, tera que ser na tentativa e

erro...a nao ser que voce tambem tenha paciencia para analisar o codigo

disassemblado.

 

OBS: Se o seu OBJ nao estiver num formato reconhecivel pelo LINK do Delphi

(um formato similar ao COFF), voce pode tentar outros Linkers, e criar uma

dll. Existem varios linkers gratuitos, que reconhecem varios formatos

(exemplos, sao lcclnk, djlnk, walk2lnk e o proprio linker da

microsoft...tambem gratuito).