スレッド表示 | 古いものから 投稿するには登録が必要です | 前のスレッド | 次のスレッド | 下へ |
投稿者 | スレッド |
---|---|
投稿数: 448
管理人 |
投稿日時: 2009-06-30 12:12 Re: MACでのboost のリンクエラー |
引用:
MASA_さんは書きました: 接尾辞の -mt- と -s- を排他的と思い込んでました。 -mt- はマルチスレッド、-s- はスタティックライブラリなので、 マルチスレッドスタティックライブラリだと -mt-s- になりますね。 | |
投稿数: 308
|
投稿日時: 2009-06-30 11:52 Re: MACでのboost のリンクエラー |
引用:
ライブラリを作り直しました。 指定のやり方では、-s-の前にまだ-mt- が付いたままでした。 それをxcodeで指定してビルドした結果 山ほどワーニングが出ましたが、プラグインは出来ました。 Shadeを実行した結果ちゃんと動作しました。 MakeHumanのMac版を作りましたので、一般フォーラムの方で公開します。 追記 Macで実行時にlexcial_castのエラーが、出まくりましたが、原因は、\r がテキストファイルにあることが原因でした。 tokenizer で \r を追加してエラーがなくなりました。 Mac(unix系)とwindows系の違いですね。 | |
投稿数: 448
管理人 |
投稿日時: 2009-06-29 17:34 Re: MACでのboost のリンクエラー |
すいません、動作確認を怠っていました。
おそらくShade起動時にコンソールのログに以下のようなエラーがでていると思います。
libboost_regex-xgcc40-mt-1_39.a のようにライブラリ接尾辞が "mt" となってるライブラリをリンクした場合は、 実行時に dylib を要求するため、ロード可能なdylibが見つからないと起動に失敗します。 @executable_path を指定してバンドルパッケージに含めればdylibでも解決できると思いますが、 dylibの管理は煩雑になるので、以下の手順でboostをスタティックリンクします。 1. boost をスタティックリンクでビルドする。 boostのビルド時に以下のように link=static runtime-link=static を追加してビルドする
2. ビルドしてできた接尾辞が "s" のライブラリをリンクする。 libboost_regex-xgcc40-s-1_39.a これで、Shadeから認識されると思います。 | |
投稿数: 308
|
投稿日時: 2009-06-28 17:09 Re: MACでのboost のリンクエラー |
一応このフォーラムの最後の質問ということで、答えようがないかもしれませんが、最後に1つ。
今迄の経過で、ようやく何のエラーも出ずにMakeHumanのプラグインが出来ましたが、 それをPluginsフォルダに置いても、他の自作のwindow_interface のプラグイン のようにShadeが認識しません。 つまり、表示メニューにそのプラグインが現れずに、プラグインマネージャーからも見付かりません。 つまり、Shadeが認識してないようです。 それで、このフォーラムで伺った、xcodeでのデバッグをしてみました。 ソースの主要なコールバック関数及び、 6個の共通のグローバル関数にブレイクポイントを設定して、 デバッグ開始させると、Shade本体は、ちゃんと起動しましたが、 そのとき、どのプレイクポイントでも、引っかからず、 Shadeのメニューにもプラグインが現れません。 同じソースがWindowsでは、ちゃんと動作してます。 また、pluginsフォルダ内にmake_human.shdplugin は、 ちゃんとあり、中身もそれらしい物が入っており、リソースも挿入されてました。 (一応毎回削除するようにしてました。) 通常、プラグインに致命的バグがる場合、Shadeでエラーが発生してクラッシュするのが普通なので、 完全にプラグインを認識してないと見ていいと思います。 このような場合は、どんなことが考えられるのでしょうか。 今のところ解決策がないので、暫く頭を冷やして、 対策案を思いつくまで、Window版の機能アップに専念しようと思います。 | |
投稿数: 308
|
投稿日時: 2009-06-28 10:16 Re: MACでのboost のリンクエラー |
makehuman のMac版をメイクしましたが、
何故か、Shadeが認識しません。 他のプラグインもいくつか認識しないものがあり、 共通する点は、自作のドラッグ追従型スライダを利用していることです。 ということで、問題が別の話になりました。 暫く自分でバグ取りしてみようと思います。 Mac版のリリースは、その後となりそうです。 | |
投稿数: 308
|
投稿日時: 2009-06-28 08:50 Re: MACでのboost のリンクエラー |
動画での説明まで頂き有難う御座います。
成る程、 ライブラリへのパスを「ライブラリ検索パス」で指定し、 使うライブラリファイルは、「グループとファイル」 で直接指定するわけだったのですね。 設定を直して実行した結果、リンクエラーはなくなりました。 うまく動いたかどうかは、Mac用MakeHumanプラグインをリリース できたかどうかで報告します。 | |
投稿数: 448
管理人 |
投稿日時: 2009-06-27 18:34 Re: MACでのboost のリンクエラー |
「ライブラリ検索パス」に /lib を追加して、
リンクするライブラリファイルをプロジェクトに追加して、 ターゲットのライブラリにリンクに追加しています。 | |
投稿数: 308
|
投稿日時: 2009-06-27 17:11 Re: MACでのboost のリンクエラー |
マニュアルでインストールしました。特に問題なく終わり、
/lib 下に期待通りのファイルも出来ているようです。 しかしながら、リンクエラーは、解決しませんでした。 私の最初の設定は、 「ターゲットの情報」内の 「リンク」内の 「他のリンカフラグ」に l/lib を設定し、 「検索パス」の 「ライブラリ検索パス」に libboost_date_time-mt libboost_filesystem-mt libboost_iostreams-mt libboost_random-mt libboost_system-mt libboost_serialization-mt と、使ってそうなライブラリのファイル名を列記しました。 すると Command /Developer/usr/bin/g++-4.0 failed with exit code 1 i686-apple-darwin9-g++-4.0.1: l/lib: No such file or directory というエラーメッセージが現れました。 どうも、本来の標準的ライブラリの方がリンクされてないようです。 「他のリンカフラグ」 のl/lib が、本来の検索パスを消滅させているようです。 引用:
の説明のように 「ライブラリ検索パス」に /lib を追加しただけでは、 (「追加のリンカフラグ」に何も設定しないで) こんどは、boost 系のライブラリが、うまくリンクされずに 数十個のエラーが発生。 どうも、基本的設定自体が間違っているような気がします。 xcode自体が初心者なので、何かバカばかしいミスのような気がします。 | |
投稿数: 448
管理人 |
投稿日時: 2009-06-27 01:18 Xcodeでのプラグインのデバッグ方法 |
引用:
Macではデバッグする気はなかったので、テーマにはしてませんでしたが、 プラグインのデバッグ方法 1. ビルドしたプラグインの出力先を "plugins" フォルダにして、ビルドしたプラグインが直接Shadeに読み込まれるようにする。 ターゲットの情報の「構成ごとのビルドプロダクトのパス」に指定した場所にビルドしたプラグインが配置されます。 構成がDebugになっていることを確認して、構成ごとのビルドプロダクトのパスを設定してください。 出力先のパスを /Applications/Shade 10/plugins にするか、 出力先の plugins フォルダと同階層に Shade 10.app ファイルを置いて、 ビルドしたプラグインが直接Shadeに読み込まれるようにします。 2. プロジェクトの「実行可能ファイル」にShadeを追加、 出力したプラグインを読み込むShadeを「カスタム実行可能ファイル」として登録します。 実行可能ファイルの項目のポップアップメニューから追加 >「新規カスタム実行可能ファイル..」選んでダイアログを開きます。 実行可能ファイルのパスに出力したプラグインを読み込むShade 10.appを追加します。 3. ~/.gdbinit に set start_with_shell 0 を指定 ユーザーのホームフォルダに ".gdbinit" ファイルを作成
のように記述してデバッグ起動時のシェルを無効にしてください。 指定していない場合は、ビルドして進行で起動時に
のようなエラーで失敗します。 4. プラグインのソースにブレークポイントを入れる 5. ビルドして進行でShadeを起動してデバッグする | |
投稿数: 308
|
投稿日時: 2009-06-26 19:14 Re: MACでのboost のリンクエラー |
回答有難うございます。
そういうことなら、マニュアルインストールして再度挑戦してみます。 その時点で、まだ何か問題があれば、また投稿させて貰います。 今回のリンクエラーは、山ほど出たのと、まだ xcode に不慣れな ためあいまいに表現しました。次回はもっと詳しく述べさせて貰います。 尚、 Macではデバッグする気はなかったので、テーマにはしてませんでしたが、 プラグインのデバック方法は、どうすればいいのか簡単なら 教えて下さい。.net の場合は、すんなりと出来たのですが xcodeの場合はそう簡単にいきませんでした。 | |
投稿数: 448
管理人 |
投稿日時: 2009-06-26 10:58 Re: MACでのboost のリンクエラー |
Shade 10 SDK サンプルでboost::regexのリンクができることを確認しました。
MacPortsの +universal オプションでは Universal Binary 化されなかったので、 以下の手順でソースコードからビルドして確認しました。
・デフォルトでは、/lib にインストールされるので、 プロジェクトのライブラリの検索パスに /lib を追加しています。 ・Shade 10.5はMacの64bit環境も対応しているため address-model=32_64 として 32ビット/64ビットの Universal Binary にしています。 ・以下のように Universal Binary になっていることを確認しています。
| |
投稿数: 448
管理人 |
投稿日時: 2009-06-26 00:07 Re: MACでのboost のリンクエラー |
リンクエラーの内容ははっきりしませんが、
プロジェクトに該当するライブラリを追加されていて、 検索パスが通っている状態でリンクエラーになるとしたら、 boostライブラリがUniversal Binaryになっていないのではないでしょうか。 標準でインストールした場合、使用しているアーキテクチャのみビルドされるので Intel Macならライブラリに含まれないppcのライブラリでリンクエラーになります。 | |
投稿数: 308
|
投稿日時: 2009-06-23 13:06 MACでのboost のリンクエラー |
boost の中でリンクライブラリが必要なファイル操作関係のライブラリを使おうとして、
別途boostをインストールしました。 Windowsでは、何の問題も無くリンク出来て使えました。(MakeHumanなどで) しかし、Macの場合、xcode でリンクエラーが出てしまいます。 一応、 MacにMacPortsで boost をインストールし、 /opt/local/ 以下に必要なファイルがインストールされていることを確認しました。 xcode では、 ターゲットの[プロジェクトの情報]の中の「検索パス」の 「ライブラリ検索パス」(「ヘッダ検索パス」の2行下) に /opt/local/lib を設定しただけです。 それ以外に必要な設定があるのでしょうか? 色々、xcode や boost の情報を検索して調べてみましたが、 どうもいい情報が見つかりません。 Shade開発では必須のはずと思いましたので投稿しました。 よろしく願います。 | |
スレッド表示 | 古いものから 投稿するには登録が必要です | 前のスレッド | 次のスレッド | トップ |