官方提供C# LogitechGSDK x64,适用于全新的.NET Framework 4.7.2 ConsoleApp。 但在同一个 .NET Framework 4.7.2 WinFormsApp 中,它不起作用。我不知道为什么。
我使用了 x64 LogitechSteeringWheelEnginesWrapper.dll 和 LogitechGSDK.cs。 (来自 logitechg.com 的文件) 我只将构建参数设置为 x64 平台。 这段代码不起作用:
StringBuilder name = new StringBuilder();
LogitechGSDK.LogiGetFriendlyProductName(0, name, 30);
// or LogitechGSDK.LogiGetDevicePath(0, name, 30);
当我运行
name.ToString()
时,它会返回设备的名称。
但是当我在 WinFormsApp 中检索 name.ToString()
时,它返回一个空字符串。
我不知道为什么,dll 加载成功,一切都是 x64。 请帮助。
这个答案不正确,但是解决方案在这个答案的评论中。
此说法错误:
LogitechGSDK.LogiGetFriendlyProductName(0, name, 30);
SDK函数需要一个
wchar_t[]
缓冲区地址,而不是对象StringBuilder
地址。
您应该创建一个缓冲区,将其地址传递给SDK函数(它将用名称字符串填充缓冲区),然后使用
Append
的StringBuilder
方法将缓冲区中的名称字符串添加到您的StringBuilder
对象中。