C++ dll 使用 Win32 从串行端口读取数据并将数据写入串行端口。我需要在我的 C# 应用程序中使用该数据。它只是像我用 C# 编写的任何其他 dll 那样引用 dll 的一种情况,导入它然后调用其中的方法吗?还是我需要做一些不同的事情?
问问题
96 次
2 回答
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 应该从您的应用程序中可见(相同的文件夹或路径)
于 2012-04-12T21:23:28.730 回答
1
您正在寻找的搜索词是 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();
}
}
于 2012-04-12T21:24:27.250 回答