我知道可以将我的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几个小时,但我没有到达任何地方,我怀疑它实际上是不可能的。任何人都可以确认或否认这个吗?
感谢。
答案 0 :(得分:8)
可以创建混合模式程序集(即具有托管代码和本机代码的程序集),但只有C ++ / CLI编译器才能生成其中一个。 C#编译器不支持您要做的事情。
答案 1 :(得分:3)
这是不可能的。虽然C#支持unsafe code(指针),但它不向后兼容C或C ++
答案 2 :(得分:2)
您可以将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);
}
答案 3 :(得分:0)