0

独自のライブラリにリンクし、date_time をブーストするアプリケーションがあります。どちらも libc++ (clang を使用) を使用しています。

アプリケーションを実行すると、ブースト ライブラリで __ZTISt12out_of_range ( = "typeinfo for std::out_of_range") の検索がすぐに停止します。

bash-3.2$ ./communicator 
dyld: Symbol not found: __ZTISt12out_of_range
  Referenced from: (...)/../Frameworks/libsipclient.dylib
  Expected in: (...)/../Frameworks/libboost_date_time-mt.dylib
 in (...)/../Frameworks/libsipclient.dylib
Trace/BPT trap: 5

どちらもそれを未定義のシンボルとして持っており、 /usr/libc++.1.dylib にはそれがあります:

bash-3.2$ nm -u ../Frameworks/{libsipclient,libboost_date_time-mt}.dylib | grep __ZTISt12out_of_range
__ZTISt12out_of_range
__ZTISt12out_of_range
bash-3.2$ nm /usr/lib/libc++.1.dylib | grep __ZTISt12out_of_range
000000000006d5c0 S __ZTISt12out_of_range

どちらも、otool に従って正しいパスで libc++ を使用します。

bash-3.2$ otool -L ../Frameworks/libsipclient.dylib | grep -e libboost -e libc
        @executable_path/../Frameworks/libboost_date_time-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
bash-3.2$ otool -L ../Frameworks/libboost_date_time-mt.dylib 
../Frameworks/libboost_date_time-mt.dylib:
        @executable_path/../Frameworks/libboost_date_time-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

何が問題なのですか?

4

1 に答える 1