有没有一种方法可以在没有 dll 的情况下直接从 C# 访问 C 文件?

Is there a way to directly access a C file from C# without a dll?

我正在制作一个应用程序,其中有很多 C 和 C# 之间的来回通信,我想知道是否有任何方法可以直接导入 C,而不是将 c 文件导出到 DLL 并将其导入到我的 C# 代码。

示例:

(C)

void myFunction() {
}

(C#)

#include "myFile.c"

...

myFunction();

谢谢!

您有两个选择:

  1. 在与 C# 代码相同的进程中托管 C 代码。这将需要一个 DLL,托管或非托管。
  2. 在外部进程中托管 C 代码。这将涉及进程间通信,例如 COM。

这两个中,前者肯定简单得多。

需要 DLL 的原因是 C# 是 dot-net 框架的一部分,因此可能 运行 由 运行time 解释器提供。 C代码不是。所以,需要将C代码打包成C#运行时间系统可以加载的DLL。

(从概念上讲,这种情况实际上与许多其他语言系统的情况非常相似,它们在运行时由某种解释器管理。)