c# - 从 C# 与 C 对话

标签 c# c

我有一个用 C(不是 C++)实现的遗留代码。我希望能够从我的 C# 代码(在 Windows 上)调用此 C 代码中的一些方法。两种语言之间的最佳接口(interface)方法是什么?请注意,C 中的方法不是无状态的。我们需要调用两个方法:

  1. initialization() => 这将初始化数据结构并将数据从文件加载到内存中。此方法将被调用一次。
  2. ComputeSomething(parameters) => 从 C# 中将多次调用此方法。

注意:这两个方法实际上调用了其他几个方法,但这只是我们想暴露给C#的两个方法(代码很复杂,所以我们不想移植到C#)

我已经能够将 c 代码导入 visual studio 并能够成功编译代码。我知道我们或许可以将 C 代码实现为 Windows 服务,但我正在寻找一种允许我们直接从 C# 调用 C 方法的解决方案。非常感谢任何指点! (COM 互操作与我想要做的事情相关吗?)

最佳答案

听起来您可以为此使用 P/Invoke。查看此站点以获取提示:

http://www.pinvoke.net/

此外,尝试在 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/

相关文章:

c - 如何在 C 中编辑 .csv 文件

c - 关键字 '%type' 和 '%token' 在 C 中有什么用?

将存储为字符的十六进制字符串转换为C中的十进制

c# - 一段时间后,随机数生成器给出相同的数字

c# - Debug.Print 与 Debug.WriteLine

c# - 如何在 ASP.Net 上创建 SMS 发送器应用程序?

c - 将字符数组转换为字符串数组的问题

C#如何将不规则的日期时间String转换成DateTime?

c# - 如何从 Web 服务中读取 XML 字符串的值

c - PowerPC 编译器的结构体数组