問題タブ [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.
c++ - デマングルされた名前からマングルされた名前を取得する
g++でデマングルされた名前からマングルされた名前を取り戻す方法はありますか?
たとえば、私はデマングルされた名前を持っていますが、マングルされた名前func(char*, int)
を取り戻すにはどうすればよい_Z4funcPci
ですか?
私の質問はg++固有です。
python - 「プライベート」名前マングリングとインスタンスとクラスの属性
私はプライベート変数にアクセスする必要があるデコレータを書いていましたが、この不一致を見つけました。誰かがこれを説明できますか?
(Python 2.5)
ネーミングマングリングは、クラスで定義された属性に対して期待どおりに機能します。
インスタンス属性は機能しません(これは私たちが正しく行うことになっている方法ですか?)
PS「クラス属性」はこれらの正しい言葉ですか?それらは静的ではありませんが、それらのリストの1つ、または他の可変タイプを作成すると、共有されます...
アップデート
実際、2番目の例も問題なく機能します。これはハードウェアの問題でした(再起動が役立ちました)。
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つが奇妙にエクスポートされ、何が起こっているのかよくわかりません。どんな助けでもいただければ幸いです。
c++ - 名前マングリングによる未解決の外部シンボル
XERCES 関数を 2.6 から 2.8 にアップグレードしているときに、リンカー エラーに直面しています。
xerces-c_2.8.lib を確認したところ、名前 lib が私の .obj ファイルのものと少し異なることがわかりました。
したがって、リンカが一致を見つけずにエラーをスローすることを理解しています。
しかし、.obj ファイルに異なる署名が含まれている理由を理解できません。
コードには、正しいヘッダー ファイルと、まだ正しくない名前の lib が含まれています。
どんな助けでも大歓迎です。
c++ - 静的オブジェクトの名前マンガリング
C++での動的リンクに関するこの記事を見つけました。
関心のあるクラスのオブジェクトを返す C++ ファクトリを作成できます。また、ファクトリのファイル スコープに静的オブジェクトを作成して、 を使用して配置できるようにする必要がありますdlsym()
。(この記事では、静的オブジェクトは名前がマングルされていないことを示唆しています。)
静的オブジェクトの名前がマングルされないのはなぜですか?
python - スレッドモジュールの__init__で定義された変数が_Thread_に名前変更される方法
私はWindows用のアクティブなPython2.7.232ビットのthreading
module( )のコードを調べています。<Python Home>/lib/threading.py
の__init__
関数ではclass Thread
、多くの変数が定義されています。
これが私が次の__init__
関数を呼び出す方法ですclass Thread
:-
変数がの関数のself._Thread__target
どこにも初期化されていないことを理解できません。しかし、この変数を自分の関数で出力すると、 fromの関数の実際の値が表示されます。__init__
class Thread
__init__
self.__target
class Thread
__init__
また、threading
モジュールを編集して、この行を__init__
関数の最後の行として配置しようとしましたclass Thread
:-
print 'in init of Thread class in threading: ', self._Thread__target
それでも、値が出力されているのを見ることができ、インタープリターはエラーを表示しません。そこで、名前の変更を行っている可能性のある関数を見つけようとしました。しかし、それを見つけることができませんでした。
__init__
これは、の関数で定義された他のすべての変数で発生していますclass Thread
。self.__target
のような変数がどのようにに名前変更されているのか知りたいですself._Thread__target
。
c++ - Visual Studioアセンブラー出力で名前をデマングルする方法は?
Visual Studio 2010/2012を使用すると、スイッチを使用してc ++ソースファイルをコンパイルし/FAs
、結果のコードのアセンブリ出力を生成できます。ただし、生成されたasmファイルには、すべてのシンボルがマングル形式で含まれています。
Visual Studioにマングルされていないシンボルを代わりに生成させるスイッチまたは他のスマートな方法はありますか?asmファイルを手動でフィードすることもできますundname.exe
が、カスタムのビルド後イベントよりもスイッチの方がはるかに便利です。
python - Ada DLL で名前の破損を防ぐ
Ada DLL を作成するときに Ada 名が壊れないようにする簡単な方法はありますか?
これが私の.adbコードです
私の .ads
私のパイソン
関数名の末尾に「@0」を追加する必要があることがわかりますが、同じコードを別のコンパイラに移動すると、これが変わるようです。これは私にいくつかの問題を引き起こしています。標準のマングリング形式か、マングリングをまとめて削除する方法が必要です。
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&&)
。なぜそうではないのですか?
decltype
g ++は、これらの形式が両方ともあるため、実際に必要な場合にのみ式を配置するよう_Z3Maxii
です。
auto Max(int x, int y) -> int
auto Max(int x, int y) -> decltype(0)