我在 C# 中使用 SDL2 读取操纵杆/控制器时遇到问题已经有一段时间了。
我使用 SDL2 进行跨平台开发,使用 MAUI for Mac 和 Windows
我尝试使用brew安装SDL2:
brew install sdl2
安装成功。然后我使用 NuGet 在终端和 Rider NuGet 部分中安装了 SDL-CS,我检查了它已经加载到我的 csproj 文件中,但以下代码在构建时会返回错误:
using SDL2;
当我构建时,我只会得到这个错误:
0>JoystickPage.xaml.cs(1,7): Error CS0246 : The type or namespace name 'SDL2' could not be found (are you missing a using directive or an assembly reference?)
0>------- Finished building project: InfiniteConnect. Succeeded: False. Errors: 1. Warnings: 0
这是基于最少的详细日志记录,诊断甚至没有说明原因,只是构建因一个错误而失败。
我尝试将行添加到我的 csproj 中,例如:
<ItemGroup>
<NativeLibrary Include="/opt/homebrew/opt/sdl2/lib/libSDL2.dylib" />
</ItemGroup>
<ItemGroup>
<None Update="/opt/homebrew/opt/sdl2/lib/libSDL2.dylib">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
但同样没有任何效果,我尝试了其他事情但也没有任何效果,也许我做得不对。
brew --prefix sdl2
简单地返回正确的目录:
/opt/homebrew/opt/sdl2
我添加了
DYLD_LIBRARY_PATH=/opt/homebrew/opt/sdl2/lib:$DYLD_LIBRARY_PATH
到maccatalyst中的环境变量,这是我用来运行的。
我错过了什么吗?我每次都重新启动 Rider 并进行清理和重建。
编辑: 这是我瞄准图书馆的地方;
<ItemGroup>
<PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="SDL2-CS" Version="2.0.0" />
</ItemGroup>