C ++和C#库和类

时间:2013-03-31 18:51:32

标签: c# c++ dll

我可以使用C ++库和Classes以C#语言构建程序吗? 如果我可以,怎么样?

2 个答案:

答案 0 :(得分:2)

您可以使用P/Invoke从托管代码调用非托管代码。以下是调用非托管puts函数的示例:

using System;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("msvcrt.dll")]
    public static extern int puts([MarshalAs(UnmanagedType.LPStr)] string m);
    [DllImport("msvcrt.dll")]
    internal static extern int _flushall();

    public static void Main() 
    {
        puts("Hello World!");
        _flushall();
    }
}

这里的想法包括声明一个托管包装器,它将匹配您要调用的非托管方法的签名。请注意该方法是如何使用extern关键字标记的,并使用DllImport属性进行修饰,以指明其实现位置。

答案 1 :(得分:1)

你当然可以!

如果您有预先存在的库@Darin所指的机制可以自动完成。使用www.swig.org