次のようなエラーが発生します。
dyld: lazy symbol binding failed: Symbol not found: __ZN2nm8RationalIxEC1ERKNS_10RubyObjectE
Referenced from: /Users/jwoods/Projects/nmatrix/lib/nmatrix.bundle
Expected in: flat namespace
dyld: Symbol not found: __ZN2nm8RationalIxEC1ERKNS_10RubyObjectE
Referenced from: /Users/jwoods/Projects/nmatrix/lib/nmatrix.bundle
Expected in: flat namespace
についても同様です__ZN2nm7ComplexIfEC1ERKNS_10RubyObjectE。
残念ながら、c++filtこれらをデマングルしたくないようです。それらをc++filtjs オンライン インターフェイスに入力しようとすると、「マングルされた C++ シンボルではありません」というメッセージが表示されます。
c++filtjsこの例では_ZN9wikipedia7article8wikilinkC1ERKSsを表しているので、エラー メッセージに少し困惑していますwikipedia::article::wikilink::wikilink(std::string const&)。その中にはいくつかのパターンがありますZN#、for 、および7forは、コンストラクターへの参照渡しのようなものだと推測しています。8::C1ERK
class Rationalなどの のコンストラクターの 1 つが欠落していると不平を言っていると思いRational::Rational(RubyObject const&)ます。Rationalただし、 はテンプレートであるため、どのバージョンが欠落しているかを理解するのに役立ちます。
しかし、ここで問題になるのは、どうすれば手でデマングルできるかということです。=)