segunda-feira, 17 de janeiro de 2011

Linkar um OBJ ao executável

Primeiro você deve "linkar" o OBJ ao seu executável.  No Delphi , isto é feito com a diretriz de compilação $L.  Fica, na sua unit principal, assim:

{$L MyOBject.OBJ}  

Incluindo as chaves.

Logo depois, você deve declarar a função contida em MyObject.OBJ da forma usual.  Você precisara conhecer os parâmetros 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).

Nenhum comentário:

Postar um comentário