SDL2-CS 自动尝试在 M2 Mac 上查找 libSDL2.dll 而不是 libSDL2.dylib

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

所以我终于设法让 Rider 在执行以下操作时不会出错:

using SDL2
。我通过不安装 SDL2-CS 而是安装 SDL2-CS.NetCore 来做到这一点,因为我使用的是 .NET 8 。

以下代码是我运行时遇到以下问题的代码:

using System;
using SDL2;

class Program
{
    static void Main()
    {
        
        // Initialize SDL with only controller and joystick support
        if (SDL.SDL_Init(SDL.SDL_INIT_GAMECONTROLLER | SDL.SDL_INIT_JOYSTICK) < 0)
        {
            Console.WriteLine("SDL could not initialize! SDL_Error: " + SDL.SDL_GetError());
            return;
        }

        Console.WriteLine("SDL initialized successfully for controller input!");

        // Cleanup SDL resources
        SDL.SDL_Quit();
    }
}

当我运行此程序时,出现以下错误: System.DllNotFoundException:无法加载共享库“SDL2.dll”或其依赖项之一

在我的环境变量中,我有:

DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH
,并在错误的更下方显示:
tried: '/opt/homebrew/lib/libSDL2.dll' (no such file)
哪个是正确的目录,只是文件不正确(应该是 libSDL2.dylib)。

如何让它在 Mac 上查找 dylib 文件,在 Windows 上查找 dll?因为这个脚本应该适用于 Mac 和 Windows。

c# macos dll sdl-2 dylib
1个回答
0
投票

好的!我终于找到答案了!

前往: https://github.com/flibitijibibo/SDL2-CS/tree/master

并克隆它 (

git clone https://github.com/flibitijibibo/SDL2-CS.git
) 或者下载它并解压(如有必要)。

在项目目录中添加一个新文件夹并将其命名为 SDL2,请注意,不再需要 SDL2-CS 库。然后在 SDL2 文件夹中复制 git 存储库中的文件 src/SDL2.cs。它应该看起来像这样:

SDL2 Folder example

然后打开它并根据需要更改

private const string nativeLibName = "SDL2";
变量,但对我来说不需要更改,它说一开始有数百个错误,但这通过将
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
添加到您的 .csproj 来修复。

确保您安装了适用于 C++ 的 SDL2 原始库,并将 dylib 文件复制到您的目录(这是可选的,我这样做只是为了在发布生产时提供帮助)。在您的环境变量中,链接 dylib 文件,如下所示:

DYLD_LIBRARY_PATH=PATH_TO_DYLIB_FILE_EXCLUDING_FILE_NAME$DYLD_LIBRARY_PATH

显然将 PATH_TO_DYLIB_FILE_EXCLUDING_FILE_NAME 替换为实际路径。然后运行代码,它应该可以工作。

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