我需要做什么从C#应用程序引用c ++ dll?

时间:2012-04-12 21:22:02

标签: c# c++

C ++ dll使用Win32读取数据并将数据写入串行端口。我需要在C#应用程序中使用该数据。它只是一个引用dll的情况,就像我用C#编写的任何其他dll一样,导入它然后调用其中的方法?或者我需要做些不同的事情吗?

2 个答案:

答案 0 :(得分:1)

如果此DLL不是COM库,则需要使用PInvoke

基本上,DLL导出的每个函数都需要使用所需的语法来定义。 这是从wininet.dll

访问函数InternetGetConnectedState所需的声明示例
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState( out int Description, int ReservedValue ) ;

之后宣布你可以用这种方式从你的C#代码中调用该函数

public static bool IsConnectedToInternet( )
{
    try
    {
        int Desc;
        return InternetGetConnectedState(out Desc, 0);
    }
    catch 
    {
        return false;
    }
}

当然,您的DLL可以从您的应用程序(相同的文件夹或路径)中看到

答案 1 :(得分:1)

您正在寻找的搜索词是PInvoke。

基本上你需要在C#类中声明引用外部C ++实现的方法。

像这样(来自MSDN sample):

class PlatformInvokeTest
{
    [DllImport("msvcrt.dll")]
    public static extern int puts(string c);
    [DllImport("msvcrt.dll")]
    internal static extern int _flushall();

    public static void Main() 
    {
        puts("Test");
        _flushall();
    }
}