重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

現在、Xcode2.4.1で開発をおこなっております。

いま作成しているプログラムは2つの自作のFrameworkを
リンクしています。
仮に、それらをFrameworkA, FrameworkBとします。

その両者のFrameworkにfooという同名の内容のことなる
関数があるとします。

また、
FrameworkAには、HogeAという関数があり、
FrameworkBには、HogeBという関数があるとします。

このとき、
HogeA関数からfoo関数を呼んだ場合、
FrameworkBのfoo関数が呼ばれてしまうことは無いのでしょうか?

私の環境でサンプルプログラムでテストしたところ
FrameworkAのfoo関数が一応呼ばれるようなのですが
常にこういう期待どおりの動きになるのかが
確信がもてません。

リンカのシンボルの解決は、
まず、それが呼ばれたFramework内を優先して
シンボル検索するものなのでしょうか?

ご存知の方がおられましたら
ご教授いただければ幸いです。

A 回答 (1件)

ビルド時のオプションで two-level namespace が指定されていれば、


シンボル(名前)+フレームワーク(ライブラリ)名で関数を検索します。

OS10.1以降では、ビルド時にtwo-level namespace オプションが
デフォルトとなっているので安心してください。

参考URL:http://developer.apple.com/jp/technotes/tn2071.h …
    • good
    • 0
この回答へのお礼

two-level namespaceがデフォルトのリンカオプションとして
セットされているので、想定外のシンボルを参照することは
無いんですね。

foo関数が呼ばれたFramework内を優先して
シンボル検索するという理解でよろしいんですね。

どうもありがとうございます。
勉強になりました。

お礼日時:2006/12/14 11:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!