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

本文关键字:应用程序 引用 c++ dll 什么 | 更新日期: 2023-09-27 18:31:09

C++ dll 使用 Win32 读取和写入数据到串行端口。我的 C# 应用程序中需要这些数据。这仅仅是像引用用 C# 编写的任何其他 dll 一样引用 dll 的情况,导入它然后调用其中的方法吗?还是我需要做一些不同的事情?

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

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

基本上,DLL 导出的每个函数都需要使用所需的语法进行定义。这是从wininet访问函数InternetGetConnectedState所需的声明的示例.dll

[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 应该在您的应用程序中可见(相同的文件夹或路径)

您要查找的搜索词是 PInvoke。

实质上,您需要在 C# 类中声明引用外部C++实现的方法。

像这样的东西(来自 MSDN 示例):

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();
    }
}
相关文章: