我有一个用 C(不是 C++)实现的遗留代码。我希望能够从我的 C# 代码(在 Windows 上)调用此 C 代码中的一些方法。两种语言之间的最佳接口(interface)方法是什么?请注意,C 中的方法不是无状态的。我们需要调用两个方法:
- initialization() => 这将初始化数据结构并将数据从文件加载到内存中。此方法将被调用一次。
- ComputeSomething(parameters) => 从 C# 中将多次调用此方法。
注意:这两个方法实际上调用了其他几个方法,但这只是我们想暴露给C#的两个方法(代码很复杂,所以我们不想移植到C#)
我已经能够将 c 代码导入 visual studio 并能够成功编译代码。我知道我们或许可以将 C 代码实现为 Windows 服务,但我正在寻找一种允许我们直接从 C# 调用 C 方法的解决方案。非常感谢任何指点! (COM 互操作与我想要做的事情相关吗?)
最佳答案
听起来您可以为此使用 P/Invoke
。查看此站点以获取提示:
此外,尝试在 SO
上搜索关于 P/Invoke
的建议,并在 Google
上搜索
c# pinvoke calling c code
我手边没有任何技术示例,但我已经编写了一些通过 P/Invoke
调用 Win32 API 的 .NET 代码。棘手的部分是在传递参数时使方法签名正确。 This可能会帮助你。
关于c# - 从 C# 与 C 对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3250956/