-1

Clarion Dll があり、C# からその内部のプロシージャを呼び出す必要があります (両方のコードにアクセスできます)。

プロシージャにパラメータを渡そうとしないと、完全に機能します。

これは実際の Clarion コードです。内部には何もありません。テスト目的でのみ使用しています。

AtualizaEstoqueNovo_Teste PROCEDURE  (string pr)           ! Declare Procedure
    CODE

プロシージャ MAP 宣言。

50A5C8 ATUALIZAESTOQUENOVO_TESTE@Fsb

C# 側から、extern void 関数を宣言しています。

[DllImport("C:\\Tests\\48\\prog\\ss007.dll", EntryPoint = "ATUALIZAESTOQUENOVO_TESTE@FSB")]
    public static extern void ATUALIZAESTOQUENOVO_TESTE(string pr);   

他の関数と同じように呼び出しています

ATUALIZAESTOQUENOVO_TESTE("");

「「ATUALIZAESTOQUENOVO_TESTE@FSB」という名前のエントリポイントが見つかりません」というエラーがスローされます

面白いことに、パラメーターを使用せずに同じことをしようとすると、うまくいきます。

これは、パラメーターなしで関数を宣言した方法です。

[DllImport("C:\\Tests\\48\\prog\\ss007.dll", EntryPoint = "ATUALIZAESTOQUENOVO_TESTE@F")]
    public static extern void ATUALIZAESTOQUENOVO_TESTE();

何が欠けているのか本当にわかりません。

また、C# コードは Windows サービス内にありますが、それは問題ではないと思います

4

1 に答える 1