在MacOS上创建dylib文件,以便与Steamworks API的Python包装器

时间:2017-12-04 23:53:04

标签: python c++ xcode dylib steamworks-api

我是一个业余爱好者程序员,试图将SteamworksForPython API集成到基于Python的游戏中。此API是Steamworks API的Python包装器,它仅正式支持C ++。我正在使用MacOS Sierra 10.12.6。

盲目地遵循文档,我做了以下事情:

  1. 我已经下载了SteamworksForPython回购。
  2. 我已将Steamworks SDK中的Steam标头目录(/ sdk / public / steam)添加到该repo。
  3. 我在该回购中添加了适用于我的操作系统的Steam API文件(在我的例子中,来自/ sdk / redistributable_bin / osx32的libsteam_api.dylib)。
  4. 文档中列出的下一步是创建一个新的dylib文件。不幸的是,尚未针对MacOS描述执行此操作的步骤。

    查看Linux和Windows的过程,似乎我需要使用repo的SteamworksPy.cpp文件和Steamworks SDK中的steam_api.h头文件来创建这个动态库文件。

    我研究过如何使用Xcode创建一个dylib文件,目前正在尝试这样做。该过程看起来类似于使用Visual Studio的documentation for Windows所描述的过程。

    我做了以下事情:

    1. 我创建了一个普通C ++动态库类型的新Xcode项目。
    2. 我已将SteamworksPy.cpp添加到 Compile Sources 列表中。
    3. 我已将steam_api.h添加到 Headers 列表中(在公共,非私有或项目下)。
    4. 我已将libsteam_api.dylib添加到 Link Binary With Libraries 部分。
    5. 然而,当我尝试构建时,我遇到了错误。这是一个截图:

      enter image description here

      以下是链接器错误的更明确的屏幕截图:

      enter image description here

      在阅读thisthisthis之后,我认为问题是Xcode不知道在哪里查找我想要链接到的库,所以我需要告诉它在哪里看。这应该很简单,但我无法做到。

      有人可以就如何继续提供建议吗?

      类似的问题很有帮助,但没有让我找到解决方案:

1 个答案:

答案 0 :(得分:3)

我设法解决了这个问题。

Xcode无法找到我尝试链接到的库的位置。

我注意到在 Build Settings 下,我可以指定链接映射文件的路径。我试图硬编码我的库(libsteam_api.dylib)所在的路径,但是我得到了上面描述的相同错误。

然后我做了一些有用的事情。

我删除了 Link Binary With Libraries 部分中对库的引用。

然后我将库从其原始位置移动到我的Xcode项目目录中。

然后我使用 Link Binary With Libraries 部分中的文件选择窗格从Xcode目录中重新选择库。

当我建造时,一切正常。