Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SDL 2 C#-打开操纵杆装置_C#_Windows_Joystick_Sdl 2 - Fatal编程技术网

SDL 2 C#-打开操纵杆装置

SDL 2 C#-打开操纵杆装置,c#,windows,joystick,sdl-2,C#,Windows,Joystick,Sdl 2,我正在尝试将我的一个老项目从DirectX移植到SDL2。我之所以使用SDL2-CS,是因为我能找到的唯一其他绑定是C#SDL2,它似乎已经过时了(最后一个不稳定的版本是2010年的6.1.1beta,最后一个稳定的版本是2008年的6.1.0) 操纵杆(Logitech Force 3D Pro/Logitech Attack 3)功能齐全,在Windows中使用SDL2和DirectX 10在Linux中工作。这是C#中的我的操纵杆Hello world(使用VS2010中的默认控制台应用程

我正在尝试将我的一个老项目从DirectX移植到SDL2。我之所以使用SDL2-CS,是因为我能找到的唯一其他绑定是C#SDL2,它似乎已经过时了(最后一个不稳定的版本是2010年的6.1.1beta,最后一个稳定的版本是2008年的6.1.0)

操纵杆(Logitech Force 3D Pro/Logitech Attack 3)功能齐全,在Windows中使用SDL2和DirectX 10在Linux中工作。这是C#中的我的操纵杆Hello world(使用VS2010中的默认控制台应用程序项目;对SDL2-CS.dll(SDL2.dll也存在于创建EXE的文件夹中)的引用也存在,并且编译/运行时没有任何错误):

控制台显示“Ooops”消息,来自SDL.SDL_GetError()的结果为有0个操纵手柄可用,名称自然为=null。至少在Linux中,我的设备索引一直是==0(我已经用1,2,3…)进行了测试,因为我在某个时间点只有一个操纵杆连接到我的笔记本。我还需要补充什么吗?欢迎提出意见、建议和/或批评

谢谢,
RBA

这个问题的解决方案是由Github-Flibitjibibo上SDL2 C#包装器的维护人员提供给我的。他指出,他曾在某个地方读到,Windows需要main()的[StatThread]-属性,以便让SDL2操纵杆(我想也是SDL2 gamecontroller)在Windows上工作。遗憾的是,如果您使用的是Linux和Mono,无论是否使用上述属性,这种情况都不会改变。这是由于对硬件进行了一些隐藏的深层处理,不幸的是,这些处理也转化为API

[STAThread]
static void Main(string[] args){ ... }

您可能可以删除整个第一段,因为它实际上不会给问题增加太多内容(除了一大块可能会让人跳过您的问题的文本)。虽然请留下您正在测试的控制器类型,因为这可能很重要。谢谢。修改了第一段。将保留有关从DirectX移植到SDL2以及其他SDL2绑定以进行C#的信息,因为如果有更好的SDL2-C#绑定的话,可能会有人建议使用更好的SDL2-C#绑定。
[STAThread]
static void Main(string[] args){ ... }