Epic Online Services のSDKをSwiftから使う / magicien 

Epic Online Services のサンプルをMacでコンパイルして動かすの続き。

Epic Online Services のMac向けSDKは、dylib(動的ライブラリ)の形で配布されており、Swiftから直接使うことができない。Swiftから、このライブラリを使うための手順は次の通り。


普通のdylibなら、module.mapとXcodeのパス設定追加でSwiftから使えるようになる。

1. ライブラリ用ファイル構成

Xcodeで作ったプロジェクトの中にライブラリ用ディレクトリを作る。
プロジェクトルート/
 ┗ Frameworks/
   ┗ EOSSDK-Mac-Shipping/
     ┣ libEOSSDK-Mac-Shipping.dylib (ダウンロードしたSDKの SDK/Bin/libEOSSDK-Mac-Shipping.dylib をコピー)
     ┣ module.map (後で作る)
     ┗ Headers/ (ダウンロードしたSDKの SDK/Include をディレクトリごとコピー)
       ┣ eos_achievements.h
       ┣ ...

2. libEOSSDK-umbrella.h を作る

インポートするヘッダをまとめたファイルを一つ作る。
基本的に全てのヘッダファイルを記載するのだけれど、後述 (6.) のエラー対応のために "eos_ui_keys.h" と "eos_result.h" を除外する。

3. module.mapを作る

これは基本的にテンプレート通り。"EOSSDK" がSwiftからimportするときの名前になる。

4. libEOSSDK-Mac-Shipping.dylib をプロジェクトに登録する

libEOSSDK-Mac-Shipping.dylib をXcodeにドラッグ&ドロップする。


TARGET の Frameworks, Libraries, and Embedded Content に libEOSSDK-Mac-Shipping.dylib が登録されていることを確認(無ければドラッグで追加)し、Embed & Sign (または Embed Without Signing)に設定する。


5. パス設定追加

プロジェクトのパス設定を追加する。

・Search Paths > Library Search Paths
"$(PROJECT_DIR)/Frameworks/EOSSDK-Mac-Shipping" を追加

・Swift Compiler - Search Paths > Import Paths
"$(PROJECT_DIR)/Frameworks/EOSSDK-Mac-Shipping" を追加

6. EOSのヘッダファイルを修正

本来ならこの段階で使えるようになるが、clangのプリプロセッサの問題なのか、一部ヘッダでエラーが出るので修正する。
規約に引っかかりそうなので、修正後のファイルを載せないが、次のように修正する。

・eos_ui_types.h
eos_ui_keys.h の中身を丸ごとコピーして 101行目の 「#include "eos_ui_keys.h"」 の部分にペースト

・eos_common.h
eos_result.h の中身を丸ごとコピーして 15行目の 「#include "eos_result.h"」の部分にペースト

・eos_ui_keys.h を削除
・eos_result.h を削除

7. 使う

module.map に設定した名前でインポートする。
import EOSSDK

今回はここまで。

続き:Epic Online Services のSDKでログインするまでの流れ(Swift)

2020/05/24(Sun) 20:35:54