1

WxWidgets2.8.9に基づくWindowsアプリケーションをMacOSXに移植しようとしています。WxWidgetsに関連するいくつかの欠落しているシンボルを除いて、すべてが正常にコンパイルされるようになりました。コマンドラインとXCodeを使用してWxWidgetsをコンパイルしようとしましたが、いくつかの異なる構成オプションを試しましたが、どれも正しく機能しませんでした。WxWidgets Wikiには、これに関するいくつかの記事がありますが、ほとんどの情報は古く、私の問題を解決するものはありませんでした。

私が得た最も近いものは、コマンドラインでWxWidgetsをコンパイルすることでした

./configure --enable-monolithic
make

次に、XCodeプロジェクト設定の「その他のリンカーフラグ」に「wxMac-2.8.9 / lib/libwx_mac-2.8.a」を追加してライブラリをリンクしました。

しかし、これにより、次のリンクエラーが発生します。

"wxOnAssert(char const *、int、char const *、char const *、char const *)"、参照元:wxStringBase :: wxStringBase(wxStringBase const&)in MyFrame.o wxCloseEvent :: Veto(bool)in MyFrame.o wxStringBase :: wxStringBase(wxStringBase const&)in TGameSettingsForm.o wxCheckBoxBase :: DoSet3StateValue(wxCheckBoxState)in TGameSettingsForm.o wxCheckBoxBase :: DoGet3StateValue()const in TGameSettingsForm.o wxStringBase :: wxStringBase(wxStringBase const&)in NonoGameStates wxStringBase const&)in TWxInvalidRegCodeForm.o

"_iconv_close"、参照元:wxMBConv_iconv ::〜wxMBConv_iconv()in libwx_mac-2.8.a(monolib_strconv.o)wxMBConv_iconv ::〜wxMBConv_iconv()in libwx_mac-2.8.a(monolib_strconv.o)wxMB_Conv_ in libwx_mac-2.8.a(monolib_strconv.o)wxMBConv_iconv ::〜wxMBConv_iconv()in libwx_mac-2.8.a(monolib_strconv.o)

"wxAppConsole :: OnAssert(char const *、int、char const *、char const *)"、参照元:CMyWxApp3_wxstaticAppinMyWxApp3-wxstaticApp.oのvtable

"_iconv"、参照元:wxMBConv_iconv :: GetMBNulLen()const in libwx_mac-2.8.a(monolib_strconv.o)wxMBConv_iconv :: WC2MB(char *、wchar_t const *、unsigned long)constin libwx_mac-2.8.a(monolib_strconv。 )wxMBConv_iconv :: WC2MB(char *、wchar_t const *、unsigned long)constin libwx_mac-2.8.a(monolib_strconv.o)wxMBConv_iconv :: MB2WC(wchar_t *、char const *、unsigned long)constin libwx_mac-2.8.a(mono .o)wxMBConv_iconv :: MB2WC(wchar_t *、char const *、unsigned long)constin libwx_mac-2.8.a(monolib_strconv.o)wxMBConv_iconv :: wxMBConv_iconv(char const *)in libwx_mac-2.8.a(monolib_strconv.o)

"wxAppConsole :: OnAssertFailure(char const *、int、char const *、char const *、char const *)"、参照元:vtable for CMyWxApp3_wxstaticAppin MyWxApp3-wxstaticApp.o "_iconv_open"、参照元:wxMBConv_iconv :: wxMBConv const *)in libwx_mac-2.8.a(monolib_strconv.o)wxMBConv_iconv :: wxMBConv_iconv(char const *)in libwx_mac-2.8.a(monolib_strconv.o)wxMBConv_iconv :: wxMBConv_iconv(char const *)in libwx_mac monolib_strconv.o)wxMBConv_iconv :: wxMBConv_iconv(char const *)in libwx_mac-2.8.a(monolib_strconv.o)ld:シンボルが見つかりませんcollect2:ldが1つの終了ステータスを返しました

可能であれば、上記で使用した静的リンクではなく、動的リンクを使用します。ただし、今のところ、それを実行できるようにしたいと思います。誰かがWxWidgetsライブラリをコンパイルしてリンクする方法についての実用的なステップバイステップの説明を私に与える(または私に指摘する)ことができれば、私は非常に感謝しています。

ありがとう、

エイドリアン

4

2 に答える 2

1

私は MacOS で wx をビルドしたことはありませんが、Windows と Linux で広く使用しています。リンクしたページの手順は、Linux のものと非常によく似ており、次のように書かれています。

make を実行すると、ビルドされたライブラリがフォルダー (build-release など) の下に見つかります。これは、対応する wx-config がある場所でもあります。

Linux で wx-config スクリプトを使用すると、プロジェクトのビルドが簡単になります。このコマンドwx-config --cxxflagsを使用するだけで、gcc に必要なコンパイル フラグwx-config --libsを取得し、リンクに必要なすべてのライブラリを取得できます。Code::Blocks などのビルド環境では、プロジェクト設定でこれらのコマンドを使用できますが、私は XCode に精通していません。最悪の場合、wx-config スクリプトがリストするコンパイラとリンカーのオプションをコピーする必要があります。

于 2009-02-23T15:43:34.070 に答える
0

wxOnAssert-関連のエラーは、wxWidgets ライブラリがリリース ビルド (未定義) でビルドされている間に、ライブラリをデバッグ (__WXDEBUG__定義済み、未定義) でビルドしたことを意味します。解決策は簡単です。これをしないでください。NDEBUG__WXDEBUG__

デバッグ バージョンをビルドする必要がある場合は、--enable-debugconfigure 引数を使用wx-config --debug ...してデバッグ モードでも wxWidgets をビルドし、適切なフラグを取得するために使用します。

于 2010-01-23T17:17:06.110 に答える