私は Haxe で書かれた独自のプロトコル、データ構造、およびロジックのクロスプラットフォーム実装を持っています。iOS および OSX 用のエンタープライズ アプリケーション (ネイティブ UI を使用) でビルドして使用するにはどうすればよいですか?
質問する
1716 次
1 に答える
9
Haxe から iOS-/OSX- ライブラリを作成し、ネイティブ アプリケーションで使用する方法
現実: 12.2014; HXCPP-ver.:
3.1.39
~git
.依存:
hxcpp
1. Haxe -> ライブラリ
という名前のメイン クラスを持つ新しい Haxe プロジェクトを作成しますHxModule
。
class HxModule
{
public static function main()
{
Sys.println('Hello from HxModule: "${test()}"');
}
@:headerCode
public static function test():Int
{
return 101;
}
}
build.hxml
-main HxModule
-cp src
-lib hxcpp
# this is for Mac OS X:
-D HXCPP_M64
# this is required on Windows. the "d" stands for debug:
#-D ABI=-MTd
--each
# at this phase we create a binary for tests
-cpp out/cpp/module
--next
# at this phase we create a binary for tests
-cpp out/cpp/module
-D static_link
-D actuate
建てる:$ haxe buid.hxml
2. Xcode プロジェクト ← ライブラリ
- 新しい Xcode プロジェクトを作成します。OSX または iOS、アプリケーション、または Cocoa フレームワーク用です。
- 「プロジェクト」/「ビルド設定」/「ヘッダー検索パス」で、依存関係へのパスを追加します: (すべてのパスは完全/非相対で再帰的である必要があります)
out/cpp/module/include
-フルパスに修正する必要があります。{your-haxelib-repo}/hxcpp/{version}/include
- {ここにあなたのもの};/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
- 「プロジェクト」/「ビルド設定」/「Apple LLVM 6.0 - 言語 - C++」で値を変更します。
- 'C++ 言語の方言' =
GNU++11 [-std=gnu++11]
- 'C++ 標準ライブラリ' =
libstdc++ (GNU C++ standard library)
- 'C++ 言語の方言' =
- 「プロジェクト」/「ビルド フェーズ」/「バイナリとライブラリのリンク」:
HxModule.a
- ファイル名の変更:
AppDelegate.m
->AppDelegate.mm
- 編集
AppDelegate.mm
:
#import "AppDelegate.h"
#import "HxModule.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSLog(@"test: %d", ((int)HxModule_obj::test()));
}
@end
さらに、オートコンプリートとより良いナビゲーションのために、ディレクトリから参照グループを Xcode プロジェクトに追加できます。
include
Haxe の出力から。include
haxelib からhxcpp
。
このテキストが書かれた時点では、考えられる問題は 1 つだけでした。ファイルを編集することで解決できます{haxelib:hxcpp}/include/hxcpp.h
。ファイルの先頭に数行を追加するだけです。
#ifndef HXCPP_H
#define HXCPP_H
// Standard headers ....
// Custom override by @suhinini
#define Class HxcppClass
// Basic mapping from haxe -> c++
typedef int Int;
typedef bool Bool;
// Windows hack
#define NOMINMAX
#ifdef _MSC_VER
#include <typeinfo.h>
namespace hx { typedef ::type_info type_info; }
...
後で見る// Standard headers ....
。
于 2014-12-07T14:31:21.437 に答える