Fórum Como fazer DLL compatível com outras linguagens #364581
02/10/2008
0
Eu quero fazer em Delphi uma DLL que seja compatível com qualquer linguagem/compilador que tenha suporte a DLLs.
Bom essa DLL só tem dois tipos de funções.
1 - Apenas recebe strings como parâmetros e faz o serviço.
2 - Faz o acima(ou não) porém retorna uma string como resultado.
Então o único problema é que não posso usar o tipo string que é específico do Delphi, pesquisando por aí vi que eu deveria usar pChar, não sei se é a melhor idéia(?) mas é o que tentei, porém não achei exemplos e não consigo fazer funcionar quando retorno um pchar, tentei várias maneiras.(Porém para receber ta funcionando).Sempre tenho erros de memória no result.
Bom essa DLL só tem dois tipos de funções.
1 - Apenas recebe strings como parâmetros e faz o serviço.
2 - Faz o acima(ou não) porém retorna uma string como resultado.
Então o único problema é que não posso usar o tipo string que é específico do Delphi, pesquisando por aí vi que eu deveria usar pChar, não sei se é a melhor idéia(?) mas é o que tentei, porém não achei exemplos e não consigo fazer funcionar quando retorno um pchar, tentei várias maneiras.(Porém para receber ta funcionando).Sempre tenho erros de memória no result.
Joeyramone
Curtir tópico
+ 0
Responder
Posts
07/10/2008
Prgdelphi
Amigo,
também estou enfrentando problemas com o desenvolvimento de DLL.
Tenho uma DLL que recebe parametros texto e retorna parametros texto tb. Para este caso usei o PCHAR.
Aparentemente tudo funciona normal, quando vou testar uma ou duas vezes. Mas quando coloco em produção mesmo, que o bicho pega e as chamadas são constantes, ela começa a apresentar problemas:
1 - chamando por um programa do proprio delphi, as vezes a DLL não retorna valor nenhum, e gera uma exception. Debugando, percebi que isso ocorre quando retorno é uma string muito grande. a DLL retorna este valor normalmente, mas o programa não o recebe. O valor ´se perde´ em algum lugar nesse link entre aplicativo e dll.
2 - chamando por um programa não delphi, ocorre muitas exceptions. Mesmo com o retorno mínimo, o programa gera exceptions. Neste caso acho que é algum problema de incompatibilidade... O que fica dificil é que as vezes funciona, as vezes não... chamadas identicas...
Desenvolver DLL em delphi é um pouco complicado mesmo... parece facil quando vc ve os exemplos, mas vai fazer uma na pratica pra ver como complica. Ainda to brigando com as minhas aqui.. rsrs.. Qualquer coisa se eu descobrir te aviso.
Mas no seu caso recomendo começar usando o Pchar mesmo.. que string do delphi em dll, é pior ainda..
também estou enfrentando problemas com o desenvolvimento de DLL.
Tenho uma DLL que recebe parametros texto e retorna parametros texto tb. Para este caso usei o PCHAR.
Aparentemente tudo funciona normal, quando vou testar uma ou duas vezes. Mas quando coloco em produção mesmo, que o bicho pega e as chamadas são constantes, ela começa a apresentar problemas:
1 - chamando por um programa do proprio delphi, as vezes a DLL não retorna valor nenhum, e gera uma exception. Debugando, percebi que isso ocorre quando retorno é uma string muito grande. a DLL retorna este valor normalmente, mas o programa não o recebe. O valor ´se perde´ em algum lugar nesse link entre aplicativo e dll.
2 - chamando por um programa não delphi, ocorre muitas exceptions. Mesmo com o retorno mínimo, o programa gera exceptions. Neste caso acho que é algum problema de incompatibilidade... O que fica dificil é que as vezes funciona, as vezes não... chamadas identicas...
Desenvolver DLL em delphi é um pouco complicado mesmo... parece facil quando vc ve os exemplos, mas vai fazer uma na pratica pra ver como complica. Ainda to brigando com as minhas aqui.. rsrs.. Qualquer coisa se eu descobrir te aviso.
Mas no seu caso recomendo começar usando o Pchar mesmo.. que string do delphi em dll, é pior ainda..
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)