是否可以在C#项目中嵌入C代码?

我知道可以将我的C代码编译成dll,然后使用P / Invoke来调用该代码。

我想知道是否有可能在我的代码中直接嵌入一大块C代码,也许只有一个类可用…

像这样(非工作)的例子:

public class MyClass { extern "C" { int do_something_in_c(int i) { return i*2; } } public int DoSomething(int value) { return do_something_in_c(value); } } 

我一直在尝试使用Visual Studio 2008几个小时,但我没有到达任何地方,我怀疑它实际上是不可能的。 任何人都可以确认或否认这个吗?

谢谢。

可以创建混合模式程序集(即具有托管代码和本机代码的程序集),但只有C ++ / CLI编译器才能生成其中一个。 C#编译器不支持您要做的事情。

这是不可能的。 虽然C#支持不安全的代码 (指针),但它不向后兼容C或C ++

您可以将C代码编写和编译为普通(非.NET)程序集,然后P / Invoke它:

 [DllImport ("mylib.dll")] private static extern int do_something_in_c(int i); public int DoSomething(int value) { return do_something_in_c(value); } 

恕我直言,这是不可能的,因为C是一种不安全和不受管理的语言。 此外,除了指针外,C#还具有C的所有重要function。