Bom dia... Tenho uma DLL criada em C# .NET, mas não estou conseguindo executa-la, ela não é registravel e quando executo código abaixo me retorna o erro "Could not find entrypoint _Concatena@12. (3260)" Alguém tem idéia do que seja e de como posso corrigir? Obrigado. Abraços... Código: PROCEDURE Concatena EXTERNAL "DLLTuper.dll": DEF INPUT PARAM i-param-1 AS LONG. DEF INPUT PARAM c-param-2 AS CHAR. DEF INPUT PARAM c-param-3 AS CHAR. DEF RETURN PARAM c-retorno AS CHAR. END PROCEDURE. DEF VAR c-retorno AS CHAR NO-UNDO. RUN Concatena(INPUT 1, INPUT "teste2", INPUT "teste3", OUTPUT c-retorno).
Anderson, Declarar uma procedure como EXTERNAL funciona quando é uma biblioteca tradicional, código nativo (C/C++/Delphi deve funcionar também/etc). O .NET gera managed code, que só roda no CLR. Não são DLLs padrão, são assemblies. A alternativa é assinalar teu método como COM, strong-name e registrar. Daí você instancia como COM-HANDLE.
Então, eu usava assim em um sistema que eu tinha: Código: DEF VAR HooksObject AS COM-HANDLE NO-UNDO. CREATE "XPTO.KeyboardHooks" HooksObject. HooksObject:DefineKey(HookShortcut). HooksObject:SetVisible(TRUE). HooksObject:DefineHandle(hdlParent). HooksObject:InstallHooks(). Esse código tá aposentado agora. Mas funcionou por alguns anos.
Deu boa Marcos, segue código que usei para o teste. Depois vou postar uma manualzinho de como fazer todo o processo, desde a criação da DLL até a instância dela. Obrigado pela ajuda. Abraços... Código: DEF VAR ch-teste AS COM-HANDLE NO-UNDO. DEF VAR c-retorno AS CHAR NO-UNDO. CREATE "RFID.RFIDBobina.Imprimir" ch-teste. ASSIGN c-retorno = ch-teste:retornaConcatenado(INPUT "teste2", INPUT "teste3"). MESSAGE c-retorno VIEW-AS ALERT-BOX INFO BUTTONS OK.
Como mencionei no post acima segue link para tutorial que publiquei sobre como criar uma DLL simples usando VB.NET e como instancia-la em progress... http://www.4each.com.br/forum/viewtopic.php?f=17&t=3136 Espero que ajude alguém. Abraços...