在 MacOS 上创建一个 dylib 文件以与 Python Steamworks API 包装器一起使用
Creating a dylib file on MacOS for use with Python wrapper of Steamworks API
我是一名业余程序员,正在尝试集成仅正式支持 C++ 的 SteamworksForPython API into a Python-based game. This API is a Python wrapper of the Steamworks API。我正在使用 MacOS Sierra 10.12.6。
盲目地按照文档,我做了以下事情:
- 我已经下载了 SteamworksForPython 存储库。
- 我已将 Steamworks SDK (/sdk/public/steam) 中的 steam header 目录添加到该存储库。
- 我已将适合我的操作系统的 Steam API 文件添加到该存储库(在我的例子中,来自 /sdk/redistributable_bin/osx32 的 libsteam_api.dylib)。
文档中列出的下一步是创建一个新的 dylib 文件。不幸的是,尚未针对 MacOS 描述执行此操作的步骤。
查看 Linux 和 Windows 的过程,似乎我需要使用 repo 的 SteamworksPy.cpp 文件和 steam_api.h header 来自 Steamworks SDK 的文件。
我研究了如何使用 Xcode 创建 dylib 文件,目前正在尝试这样做。该过程似乎类似于 documentation 为 Windows 使用 Visual Studio.
所描述的过程
我做了以下事情:
- 我创建了一个新的 Xcode 纯 C++ 动态库类型的项目。
- 我已将 SteamworksPy.cpp 添加到 Compile Sources 列表中。
- 我已将 steam_api.h 添加到 Headers 列表(在 public 下,不是私人或项目)。
- 我已将 libsteam_api.dylib 添加到 Link Binary With Libraries 部分。
但是,我在尝试构建时遇到错误。这是屏幕截图:
这里是 linker 错误的更明确的屏幕截图:
阅读 this, this, and this 后,我认为问题是 Xcode 不知道去哪里寻找我要 link 的图书馆,所以我需要告诉它在哪里看。这应该很简单,但我做不到。
谁能给我建议如何进行?
类似的问题很有帮助,但没有让我找到解决方案:
- How do I create a dynamic library (dylib) with Xcode?
- Building and Using a DYLIB in Xcode
- ld: library not found
- ld: library not found for -lgsl
- xcode library not found
我设法解决了这个问题。
Xcode 找不到我试图 link 到的库的位置。
我注意到在 Build Settings 下我可以指定 Link Map File 的路径。我试图将路径硬编码到我的库 (libsteam_api.dylib) 所在的位置,但我遇到了与上述相同的错误。
然后我做了一些有用的事情。
我删除了 Link Binary With Libraries 部分中对库的引用。
然后我将库从其原始位置移动到我的 Xcode 项目目录中。
然后我使用 Link Binary With Libraries 部分中的文件选择窗格从 Xcode 目录中重新选择库。
当我构建时,一切正常。
我是一名业余程序员,正在尝试集成仅正式支持 C++ 的 SteamworksForPython API into a Python-based game. This API is a Python wrapper of the Steamworks API。我正在使用 MacOS Sierra 10.12.6。
盲目地按照文档,我做了以下事情:
- 我已经下载了 SteamworksForPython 存储库。
- 我已将 Steamworks SDK (/sdk/public/steam) 中的 steam header 目录添加到该存储库。
- 我已将适合我的操作系统的 Steam API 文件添加到该存储库(在我的例子中,来自 /sdk/redistributable_bin/osx32 的 libsteam_api.dylib)。
文档中列出的下一步是创建一个新的 dylib 文件。不幸的是,尚未针对 MacOS 描述执行此操作的步骤。
查看 Linux 和 Windows 的过程,似乎我需要使用 repo 的 SteamworksPy.cpp 文件和 steam_api.h header 来自 Steamworks SDK 的文件。
我研究了如何使用 Xcode 创建 dylib 文件,目前正在尝试这样做。该过程似乎类似于 documentation 为 Windows 使用 Visual Studio.
所描述的过程我做了以下事情:
- 我创建了一个新的 Xcode 纯 C++ 动态库类型的项目。
- 我已将 SteamworksPy.cpp 添加到 Compile Sources 列表中。
- 我已将 steam_api.h 添加到 Headers 列表(在 public 下,不是私人或项目)。
- 我已将 libsteam_api.dylib 添加到 Link Binary With Libraries 部分。
但是,我在尝试构建时遇到错误。这是屏幕截图:
这里是 linker 错误的更明确的屏幕截图:
阅读 this, this, and this 后,我认为问题是 Xcode 不知道去哪里寻找我要 link 的图书馆,所以我需要告诉它在哪里看。这应该很简单,但我做不到。
谁能给我建议如何进行?
类似的问题很有帮助,但没有让我找到解决方案:
- How do I create a dynamic library (dylib) with Xcode?
- Building and Using a DYLIB in Xcode
- ld: library not found
- ld: library not found for -lgsl
- xcode library not found
我设法解决了这个问题。
Xcode 找不到我试图 link 到的库的位置。
我注意到在 Build Settings 下我可以指定 Link Map File 的路径。我试图将路径硬编码到我的库 (libsteam_api.dylib) 所在的位置,但我遇到了与上述相同的错误。
然后我做了一些有用的事情。
我删除了 Link Binary With Libraries 部分中对库的引用。
然后我将库从其原始位置移动到我的 Xcode 项目目录中。
然后我使用 Link Binary With Libraries 部分中的文件选择窗格从 Xcode 目录中重新选择库。
当我构建时,一切正常。