代码之家  ›  专栏  ›  技术社区  ›  Jonathan

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

  •  7
  • Jonathan  · 技术社区  · 15 年前

    我知道有可能将我的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已经试了几个小时了,但是我什么地方也没有,我怀疑这实际上是不可能的。有人能证实或否认这一点吗?

    谢谢。

    4 回复  |  直到 10 年前
        1
  •  8
  •   Steve Dennis    15 年前

    可以创建混合模式程序集(即具有托管代码和本机代码的程序集),但只有C++/CLI编译器可以生成这些模式之一。C编译器不支持您要执行的操作。

        2
  •  3
  •   Richard Szalay    15 年前

    这是不可能的。而C支持 unsafe code (指针),它不是向后兼容C或C++。

        3
  •  2
  •   Mixer    10 年前

    您可以将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);
    }
    
        4
  •  0
  •   Salil    15 年前

    imho,这是不可能的,因为C是一种不安全的非托管语言。此外,除了指针,C具有C的所有重要特性。