我是一名 C/C++ 程序员,但我被要求更新一个用 C# 编写的程序以与设备通信。我的 C# 知识非常基础。
以前的版本完全是用C#写的,但是现在实际上访问设备的API被更改为C。我发现我可以通过使用以下方式导入C函数API:
[DllImport("myapi.dll")]
public static extern int myfunct(
[MarshalAs(UnmanagedType.LPTStr)] string lpDeviceName,
IntPtr hpDevice);
在 C 中,这个函数原型是:
int myFunct( LPTStr lpDeviceName, HANDLE* hpDevice );
其中 HANDLE 定义为:
typedef void *HANDLE;
但是,此功能无法按预期工作。实际上,在 C# 代码中调用我应该声明什么样的类型并将其传递给 C# 方法?
感谢您的帮助,并对任何愚蠢的问题感到抱歉。