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 サービス内にありますが、それは問題ではないと思います