我有一个 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("");
它向我抛出错误“无法找到名为“ATUALIZAESOQUENOVO_TESTE@FSB”的入口点”
有趣的是,如果我尝试做同样的事情但不使用任何参数,它会起作用。
这就是我声明没有参数的函数的方式:
[DllImport("C:\\Tests\\48\\prog\\ss007.dll", EntryPoint = "ATUALIZAESTOQUENOVO_TESTE@F")]
public static extern void ATUALIZAESTOQUENOVO_TESTE();
我真的不知道我错过了什么。
此外,C# 代码位于 Windows 服务中,但我认为这无关紧要