我目前正在尝试为我的 G19 使用罗技 sdk。
我能找到的关于这个主题的所有信息都可以追溯到 2012 年,并且许多方法都更改了名称,我决定尝试制作一个新的 .NET Wrapper。
但是我被困住了,什么也没有。
我首先创建了一个库项目。这是库代码:
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace Logitech_LCD
{
/// <summary>
/// Class containing necessary informations and calls to the Logitech SDK
/// </summary>
public class NativeMethods
{
#region Enumerations
/// <summary>
/// LCD Types
/// </summary>
public enum LcdType
{
Mono = 1,
Color = 2,
}
/// <summary>
/// Screen buttons
/// </summary>
[Flags]
public enum Buttons
{
MonoButton0 = 0x1,
ManoButton1 = 0x2,
MonoButton2 = 0x4,
MonoButton3 = 0x8,
ColorLeft = 0x100,
ColorRight = 0x200,
ColorOK = 0x400,
ColorCancel = 0x800,
ColorUp = 0x1000,
ColorDown = 0x2000,
ColorMenu = 0x4000,
}
#endregion
#region Dll Mapping
[DllImport("LogitechLcd.dll", CallingConvention = CallingConvention.Cdecl))]
public static extern bool LogiLcdInit(String friendlyName, LcdType lcdType);
[DllImport("LogitechLcd.dll", CallingConvention = CallingConvention.Cdecl))]
public static extern bool LogiLcdIsConnected(LcdType lcdType);
#endregion
}
}
然后,在一个虚拟应用程序中,我尝试调用LogiLcdInit
:
Console.WriteLine(Logitech_LCD.NativeMethods.LogiLcdIsConnected(Logitech_LCD.NativeMethods.LcdType.Color));
Console.WriteLine(Logitech_LCD.NativeMethods.LogiLcdInit("test", Logitech_LCD.NativeMethods.LcdType.Color));
Console.WriteLine(Logitech_LCD.NativeMethods.LogiLcdIsConnected(Logitech_LCD.NativeMethods.LcdType.Color));
现在的问题是:对于这些行中的每一行,我都会遇到 PInvokeStackImbalance 异常。除了方法名称,没有更多细节。
这是Logitech SDK的链接以供参考
编辑:更改代码以反映由于答案而导致的代码更改
编辑 2
由于您的回答,这是我制作的 .NET 包装器:https ://github.com/sidewinder94/Logitech-LCD
只是放在这里作为参考。