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