次のようなエラーが発生します。
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 、および7
forは、コンストラクターへの参照渡しのようなものだと推測しています。8
::
C1ERK
class Rational
などの のコンストラクターの 1 つが欠落していると不平を言っていると思いRational::Rational(RubyObject const&)
ます。Rational
ただし、 はテンプレートであるため、どのバージョンが欠落しているかを理解するのに役立ちます。
しかし、ここで問題になるのは、どうすれば手でデマングルできるかということです。=)