-1

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

4

2 回答 2

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指示其实现位置的属性进行修饰。

于 2013-03-31T18:54:50.850 回答
1

绝对可以!

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

于 2013-03-31T18:57:24.727 回答