MEU CÓDIGO PROGRESS Código: def var myretorno as CHARACTER. run Teste(output myretorno). MESSAGE myretorno VIEW-AS ALERT-BOX INFO BUTTONS OK. procedure Teste external "C:\MyDLL.dll": def OUTPUT parameter retorn as CHARACTER. end. abaixo segue a estrutura da minha simples dll Código: using System; using System.Collections.Generic; using System.Text; public class Seguranca { public string Teste() { return "Retornou Teste"; } } Alguem poderia me dar um help?
Olá, Acho que ele não está encontrando a classe segurança, tente deixar-la como construtor. E segue abaixo um exemplo pra ajudar: Código: DEFINE VARIABLE resulto AS INTEGER. MESSAGE " Janela com o message do progress" VIEW-AS ALERT-BOX MESSAGE BUTTONS OK TITLE "ABL Message". RUN MessageBoxA (0, " Janela com o message do win :)", "ABL DLL Access", 0, OUTPUT resulto). PROCEDURE MessageBoxA EXTERNAL "user32.dll": DEFINE INPUT PARAMETER hwnd AS LONG. DEFINE INPUT PARAMETER mbtext AS CHARACTER. DEFINE INPUT PARAMETER mbtitle AS CHARACTER. DEFINE INPUT PARAMETER style AS LONG. DEFINE RETURN PARAMETER result AS LONG. END.
wellington, Se você mandar o erro é melhor. Mas eu suponho que o problema seja teu código progress. Quando você declara uma procedure como EXTERNAL, está dizendo que o código dela está em alguma biblioteca nativa, com uma entrada para a função na tabela de símbolos. Ocorre que código .NET não gera uma biblioteca nativa, mas sim uma assembly. Esse código precisa do runtime do .NET para funcionar, do Jitter, BCL, GC e tudo mais. Você pode carregar isso manualmente (não recomendo) ou usa a interoperabilidade COM para fazer o trabalho pesado. Você deve marcar a classe como COMVisible, strong-name, registrar, e depois chamar no progress como COM-HANDLE. Não é trivial mas funciona bem.