我需要做什么才能从 C# 应用程序引用 c++ dll
本文关键字:应用程序 引用 c++ dll 什么 | 更新日期: 2023-09-27 18:31:09
C++ dll 使用 Win32 读取和写入数据到串行端口。我的 C# 应用程序中需要这些数据。这仅仅是像引用用 C# 编写的任何其他 dll 一样引用 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();
}
}