問題タブ [name-mangling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
20787 参照

c++ - デマングルされた名前からマングルされた名前を取得する

g++でデマングルされた名前からマングルされた名前を取り戻す方法はありますか?

たとえば、私はデマングルされた名前を持っていますが、マングルされた名前func(char*, int)を取り戻すにはどうすればよい_Z4funcPciですか?

私の質問はg++固有です。

0 投票する
1 に答える
3011 参照

python - 「プライベート」名前マングリングとインスタンスとクラスの属性

私はプライベート変数にアクセスする必要があるデコレータを書いていましたが、この不一致を見つけました。誰かがこれを説明できますか?

(Python 2.5)

ネーミングマングリングは、クラスで定義された属性に対して期待どおりに機能します。

インスタンス属性は機能しません(これは私たちが正しく行うことになっている方法ですか?)

PS「クラス属性」はこれらの正しい言葉ですか?それらは静的ではありませんが、それらのリストの1つ、または他の可変タイプを作成すると、共有されます...

アップデート

実際、2番目の例も問題なく機能します。これはハードウェアの問題でした(再起動が役立ちました)。

0 投票する
2 に答える
744 参照

compiler-construction - Intel Visual Fortranコンパイラの名前修飾、私のコンパイラはただクレイジーですか?

Intel Visual Fortran ComposerXE2011を使用してMSVisualStudio 2008でFortranプロジェクトをビルドしています。リンカーエラーが発生します:LNK2019未解決の外部シンボル。

objファイルでダンプビンを実行しました。すべてのシンボル(CVF呼び出し規約に基づく)は、接頭辞が付いた3つのランダムなシンボルを除いて、_symbol1、_symbol2、_symbol3などとしてエクスポートされます。

例:_ imp _symbol4、_ imp _symbol5、_ imp _symbol6

最初は、私の呼び出し規約が問題だったのではないかと思っていましたが、それが私の呼び出し規約だったとしたら、他のすべてのシンボルにも、接頭辞がimpが付いた状態でエクスポートされたのではないでしょうか。ランダムなので、そのうちの3つが奇妙にエクスポートされ、何が起こっているのかよくわかりません。どんな助けでもいただければ幸いです。

0 投票する
2 に答える
1473 参照

c++ - 名前マングリングによる未解決の外部シンボル

XERCES 関数を 2.6 から 2.8 にアップグレードしているときに、リンカー エラーに直面しています。

xerces-c_2.8.lib を確認したところ、名前 lib が私の .obj ファイルのものと少し異なることがわかりました。

したがって、リンカが一致を見つけずにエラーをスローすることを理解しています。

しかし、.obj ファイルに異なる署名が含まれている理由を理解できません。

コードには、正しいヘッダー ファイルと、まだ正しくない名前の lib が含まれています。

どんな助けでも大歓迎です。

0 投票する
1 に答える
157 参照

c++ - 静的オブジェクトの名前マンガリング

C++での動的リンクに関するこの記事を見つけました。

関心のあるクラスのオブジェクトを返す C++ ファクトリを作成できます。また、ファクトリのファイル スコープに静的オブジェクトを作成して、 を使用して配置できるようにする必要がありますdlsym()。(この記事では、静的オブジェクトは名前がマングルされていないことを示唆しています。)

静的オブジェクトの名前がマングルされないのはなぜですか?

0 投票する
2 に答える
218 参照

python - スレッドモジュールの__init__で定義された変数が_Thread_に名前変更される方法

私はWindows用のアクティブなPython2.7.232ビットのthreadingmodule( )のコードを調べています。<Python Home>/lib/threading.py__init__関数ではclass Thread、多くの変数が定義されています。

これが私が次の__init__関数を呼び出す方法ですclass Thread:-

変数がの関数のself._Thread__targetどこにも初期化されていないことを理解できません。しかし、この変数を自分の関数で出力すると、 fromの関数の実際の値が表示されます。__init__class Thread__init__self.__targetclass Thread__init__

また、threadingモジュールを編集して、この行を__init__関数の最後の行として配置しようとしましたclass Thread:-

print 'in init of Thread class in threading: ', self._Thread__target

それでも、値が出力されているのを見ることができ、インタープリターはエラーを表示しません。そこで、名前の変更を行っている可能性のある関数を見つけようとしました。しかし、それを見つけることができませんでした。

__init__これは、の関数で定義された他のすべての変数で発生していますclass Threadself.__targetのような変数がどのようにに名前変更されているのか知りたいですself._Thread__target

0 投票する
2 に答える
1319 参照

c++ - Visual Studioアセンブラー出力で名前をデマングルする方法は?

Visual Studio 2010/2012を使用すると、スイッチを使用してc ++ソースファイルをコンパイルし/FAs、結果のコードのアセンブリ出力を生成できます。ただし、生成されたasmファイルには、すべてのシンボルがマングル形式で含まれています。

Visual Studioにマングルされていないシンボルを代わりに生成させるスイッチまたは他のスマートな方法はありますか?asmファイルを手動でフィードすることもできますundname.exeが、カスタムのビルド後イベントよりもスイッチの方がはるかに便利です。

0 投票する
2 に答える
358 参照

python - Ada DLL で名前の破損を防ぐ

Ada DLL を作成するときに Ada 名が壊れないようにする簡単な方法はありますか?

これが私の.adbコードです

私の .ads

私のパイソン

関数名の末尾に「@0」を追加する必要があることがわかりますが、同じコードを別のコンパイラに移動すると、これが変わるようです。これは私にいくつかの問題を引き起こしています。標準のマングリング形式か、マングリングをまとめて削除する方法が必要です。

0 投票する
3 に答える
1020 参照

c++ - C++テンプレート-ABIマングル名の引数に依存するdecltype

次の関数について考えてみます。

フラグメントMin(0, 1)により、テンプレートはとしてインスタンス化されMin<int, int>ます。不思議なことに、Min私のコードのwith g ++とclangのマングル名は_Z3MinIiiEDTqultfp_fp0_cl7forwardIT_Efp_Ecl7forwardIT0_Efp0_EEOS0_OS1_ (別名:)ですdecltype (({parm#1}<{parm#2})?((forward<int>)({parm#1})) : ((forward<int>)({parm#2}))) Min<int, int>(int&&, int&&)。つまり、戻り型を推測するために使用される式は、マングルされた名前の一部です_Z3MinIiiET_OS0_OT0_個人的に、私は:(別名:)の線に沿ってもう少し正気な何かを期待していましたint Min<int, int>(int&&, int&&)なぜそうではないのですか?


decltypeg ++は、これらの形式が両方ともあるため、実際に必要な場合にのみ式を配置するよう_Z3Maxiiです。

  • auto Max(int x, int y) -> int
  • auto Max(int x, int y) -> decltype(0)