2016-12-02 31 views
3

リモートサーバーとの通信を試みるhaxeプログラムを作成しました。私はC++ターゲットにうまくコンパイルできました。実行ファイルは私のシステム上で正常に動作します。しかし、私は別のWindowsボックス上で同じことを実行しようとすると、それは次のようなエラーHaxe - C++スタンドアロンの実行可能ファイルを作成する

エラーで失敗します。私は、魔法のように働いたhaXeのとhxcppをインストールsocket_init__0

@モジュールSTDをロードできませんでした。 。私はexeを実行することができました。私は今、hxcppに依存していることを理解しています。

スタンドアロンアプリケーションを作成するにはまだ問題は解決していません。いくつかの調査の後、私は私の問題を解決するかもしれないと思う次の指示でファイル(ExampleMain.CPP)を見つけました。しかし、私は初心者であり、それほどフォローしていません。誰かがこれで私を歩くことができますか?おかげ

ExampleMain.CPP

これは、静的なバージョンをリンクするために使用することができる。例えばメインラインです。

CD $ HXCPP /ランタイムの

haxelibの実行hxcpp BuildLibs.xml -Dstatic_link

次に静的verion: まずあなたがして、標準のlibsの静的バージョンを構築する必要があります( 'static_link' の前に余分なスペース注):使用してアプリケーション

haXeの-main YourMain -cpp CPP -D static_link

上記のライブラリをこの(または変更されたバージョンの)メインにリンクする必要があります。 VisualStudioプロジェクトを作成し、 $ HXCPP/bin/Windows /(std、regexp、zlib).libとアプリケーションライブラリのライブラリを追加することができます。

-debugフラグを指定してコンパイルすると、ライブラリの名前が異なることにも注意してください。

CL ExampleMain.cppのCPP/YourMain.lib $ HXCPP/binに/ Windowsの/ std.lib$ HXCPP:Windows用のコマンドライン(user32.libのみデバッグバージョンのために必要な)からのリンク

/bin/Windows/zlib.lib $ HXCPP/bin/Windows/regexp.lib user32.lib

他のOSの場合は、compile + linkコマンドが異なります。ここではMac用のいずれかです。

G ++ ExampleMain.cpp CPP /テスト-debug.aの$ HXCPP/binに/マック/ regexp.a$ HXCPP/binに/マック/ std.aます$ HXCPP/binに/マックあなたはこれらの3以外の他の静的ライブラリを追加したい場合は

/zlib.a(例えば、NME)あなたは あまりにも「-Dstatic_link」フラグを使用してこれらをコンパイルし、そして彼らの「register_prims」 のinitコールを呼び出す必要があります。余分な静的ライブラリを含めるには、リンク行にライブラリ が必要であり、リンクするには追加の依存関係が必要な場合があります。 静的リンクの第三者ライブラリ にライセンスの影響があることにも注意してください。

答えて

3

私は確信していませんが、hxcppがあなたと同じ手順をもう踏んでいるようです。スタンドアロンアプリケーションをコンパイルすると、実際にはスタンドアロンであり、hxcpp自体に依存しませんが、hxcpp内の標準ライブラリに依存している可能性があります。たとえば、正規表現を使用する場合は、注意したように、hxcppが持っているregexp.dllが必要です。 haxe標準ライブラリはstd.dllにあり、zlibはzipパッケージから圧縮を使用した場合です。

私が間違っていないのであれば、デフォルトではこれらのコンポーネントを動的に参照することになります。あなたのアプリケーションをあなたが提案したようにスタンドアロンにするために、これらのdllをあなたのバイナリと一緒にコピーするだけです。

これらのライブラリコンポーネントを静的にリンクしたい場合は、haxeコードから自動的にimportパッケージのタイプを選択してください。cpp.linkこれはhxcppに自動的にそのライブラリをコンパイルの一部として持ってくるように指示し、動的にではなくバイナリに静的にリンクします。特別なステップは必要ありません!

短い回答import cpp.link.StaticStd;と他のライブラリコンポーネントをコードのどこかにリンクパッケージに追加します。それは、それがインポートされている限りどこでも、それはリンクされます。

関連する問題