C# LogitechGSDK 仅适用于 ConsoleApp

问题描述 投票:0回答:1

官方提供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。 请帮助。

c# winforms console-application dllimport logitech-gaming-software
1个回答
0
投票

这个答案不正确,但是解决方案在这个答案的评论中。


此说法错误:

LogitechGSDK.LogiGetFriendlyProductName(0, name, 30);

SDK函数需要一个

wchar_t[]
缓冲区地址,而不是对象
StringBuilder
地址。

您应该创建一个缓冲区,将其地址传递给SDK函数(它将用名称字符串填充缓冲区),然后使用

Append
StringBuilder
方法将缓冲区中的名称字符串添加到您的
StringBuilder
对象中。

© www.soinside.com 2019 - 2024. All rights reserved.