Shade online フォーラム
ログイン
ユーザ名:

パスワード:

IDとパスワードを記憶

パスワード紛失
スレッド表示 | 古いものから 投稿するには登録が必要です 前のスレッド | 次のスレッド | 下へ
投稿者 スレッド
投稿数: 448
管理人
投稿日時: 2009-06-30 12:12
Re: MACでのboost のリンクエラー
引用:
MASA_さんは書きました:
指定のやり方では、-s-の前にまだ-mt-
が付いたままでした。

接尾辞の -mt- と -s- を排他的と思い込んでました。
-mt- はマルチスレッド、-s- はスタティックライブラリなので、
マルチスレッドスタティックライブラリだと -mt-s- になりますね。
投稿数: 308
投稿日時: 2009-06-30 11:52
Re: MACでのboost のリンクエラー
引用:

画像投稿機さんは書きました:

libboost_regex-xgcc40-mt-1_39.a
のようにライブラリ接尾辞が "mt" となってるライブラリをリンクした場合は、
実行時に dylib を要求するため、ロード可能なdylibが見つからないと起動に失敗します。

2. ビルドしてできた接尾辞が "s" のライブラリをリンクする。
libboost_regex-xgcc40-s-1_39.a

これで、Shadeから認識されると思います。

ライブラリを作り直しました。
指定のやり方では、-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起動時にコンソールのログに以下のようなエラーがでていると思います。

Library not loaded: libboost_regex-xgcc40-mt-1_39.dylib
	...
  Reason: image not found


libboost_regex-xgcc40-mt-1_39.a
のようにライブラリ接尾辞が "mt" となってるライブラリをリンクした場合は、
実行時に dylib を要求するため、ロード可能なdylibが見つからないと起動に失敗します。

@executable_path を指定してバンドルパッケージに含めればdylibでも解決できると思いますが、
dylibの管理は煩雑になるので、以下の手順でboostをスタティックリンクします。

1. boost をスタティックリンクでビルドする。
boostのビルド時に以下のように link=static runtime-link=static を追加してビルドする
bjam install link=static runtime-link=static architecture=combined address-model=32_64


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 にインストールされるので、
 プロジェクトのライブラリの検索パスに /lib を追加しています。


の説明のように
「ライブラリ検索パス」に /lib を追加しただけでは、
(「追加のリンカフラグ」に何も設定しないで)
こんどは、boost 系のライブラリが、うまくリンクされずに
数十個のエラーが発生。

どうも、基本的設定自体が間違っているような気がします。
xcode自体が初心者なので、何かバカばかしいミスのような気がします。
投稿数: 448
管理人
投稿日時: 2009-06-27 01:18
Xcodeでのプラグインのデバッグ方法
引用:
Macではデバッグする気はなかったので、テーマにはしてませんでしたが、
プラグインのデバック方法は、どうすればいいのか簡単なら
教えて下さい。.net の場合は、すんなりと出来たのですが
xcodeの場合はそう簡単にいきませんでした。


プラグインのデバッグ方法

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" ファイルを作成
set start_with_shell 0

のように記述してデバッグ起動時のシェルを無効にしてください。

指定していない場合は、ビルドして進行で起動時に
/bin/bash: line 0: exec: arch: not found

のようなエラーで失敗します。

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 化されなかったので、
以下の手順でソースコードからビルドして確認しました。

$ tar jxvf boost_1_39_0.tar.bz2
$ cd boost_1_39_0/
$ ./bootstrup.sh
$ ./bjam install architecture=combined address-model=32_64


・デフォルトでは、/lib にインストールされるので、
 プロジェクトのライブラリの検索パスに /lib を追加しています。

・Shade 10.5はMacの64bit環境も対応しているため address-model=32_64 として
 32ビット/64ビットの Universal Binary にしています。

・以下のように Universal Binary になっていることを確認しています。
 $ file /lib/libboost_regex-xgcc40-mt.a 
/lib/libboost_regex-xgcc40-mt.a: Mach-O universal binary with 4 architectures
/lib/libboost_regex-xgcc40-mt.a (for architecture i386):	current ar archive
/lib/libboost_regex-xgcc40-mt.a (for architecture ppc):	current ar archive
/lib/libboost_regex-xgcc40-mt.a (for architecture x86_64):	current ar archive
/lib/libboost_regex-xgcc40-mt.a (for architecture ppc64):	current ar archive

投稿数: 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開発では必須のはずと思いましたので投稿しました。
よろしく願います。
スレッド表示 | 古いものから 投稿するには登録が必要です 前のスレッド | 次のスレッド | トップ

最近の投稿

フォーラム スレッド 返信 閲覧 最終投稿
Free Talk DNAの2重らせんの水素結合部位の作成 0 11840 2016-08-01 21:37 Benthos
Free Talk パート内の名前を一括返還 2 14369 2016-03-07 12:21 画像投稿機
Dev Forum イームズシェルチェアーの作成 2 14241 2015-11-25 14:44 CR7
Free Talk MOVファイルについて 17 35439 2014-12-29 17:14 momokuma
Dev Forum 2種類の液体アニメーションを作る方法 0 14335 2014-11-13 10:42 mejapan
Free Talk 面取りについて 0 13468 2014-11-08 15:18 MoonChild
Free Talk 丸太を結ぶ縄の作成について 1 19661 2014-09-18 22:33 kenslab
Free Talk パーティクルフィジックスのメタパーティクルについて 0 13917 2014-09-03 20:40 penta
Free Talk データの保存に関して 2 13796 2014-08-18 01:24 sierra
Free Talk Shade 3D ver14での、ポリゴンメッシュへの変換以上終了 1 14200 2014-04-23 12:04 MASA_