問題タブ [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++ - C++でのextern"C"の効果は何ですか?
C ++コードに入れることは正確に何をextern "C"
しますか?
例えば:
python - プライベートネームマングリングの利点は何ですか?
Python は、クラスのメソッドと属性にプライベートな名前マングルを提供します。
この機能が必要となる具体的なケースはありますか、それとも Java と C++ からの単なる継承ですか?
ある場合、Python の名前マングリングを使用する必要があるユース ケースを説明してください。
また、作成者が偶発的な外部属性アクセスを防止しようとしているだけの場合には興味がありません。このユース ケースは、Python プログラミング モデルと一致していないと思います。
c++ - OS /XでのC++バックトレースの生成(10.5.7)
私はbacktraceとbacktrace_symbolsを利用して、ロギング/診断の目的でプログラムによるスタックトレースを生成してきました。大まかに機能しているように見えますが、少し混乱していて、各関数の呼び出しに関連付けられたファイル/行番号はありません(gdb bt呼び出しなどで予想されるように)。次に例を示します。
1レオナルド0x00006989 _ZN9ExceptionC2E13ExceptionType + 111
2レオナルド0x00006a20 _ZN9ExceptionC1E13ExceptionType + 24
3レオナルド0x0000ab64 _ZN5Rules11ApplyActionER16ApplicableActionR9GameState + 1060年
4レオナルド0x0000ed15 _ZN9Simulator8SimulateEv + 2179
年5レオナルド0x0000eec9 _ZN9Simulator8SimulateEi + 37
6レオナルド0x00009729 45 +メイン
7レオナルド0x000025c6スタート+ 54
私が何かを見逃している、何か愚かなことをしている、またはこれがOS / Xのバックトレースから期待できるすべてですか?
他のいくつかのヒント:
rdynamic
使用しているg++バージョン(4.0.1)のリンクオプションが表示されません。-g/-g3
違いはありません。
abi::__cxa__demangle
何もしていないようです
language-agnostic - 名前マングリングとは何ですか、そしてそれはどのように機能しますか?
名前マングリングとは何か、それがどのように機能するか、それがどのような問題を解決するか、そしてどのコンテキストと言語が使用されているかを説明してください。名前マングリング戦略(たとえば、コンパイラーが選択する名前とその理由)はプラスです。
c++ - Linux で (C および C++) バイナリのシンボルを表示するにはどうすればよいですか?
皆さんはどのツールを使っていますか?demangle c++ シンボルは、opannotateなどのプロファイラー ツールにどのように渡すことができますか?
ありがとう
c++ - DLL のエクスポートされた関数の名前マングリングを停止するにはどうすればよいですか?
「GetName」という関数をエクスポートする DLL を作成しようとしています。マングルされた関数名を知らなくても、他のコードでこの関数を呼び出せるようにしたいと思います。
私のヘッダーファイルは次のようになります。
私のコードは次のようになります。
ビルドすると、DLL は引き続き "_GetName@0" という名前の関数をエクスポートします。
私は何を間違っていますか?
reflection - Scala: オブジェクトを動的にインスタンス化し、リフレクションを使用してメソッドを呼び出すにはどうすればよいですか?
Scala で、オブジェクトを動的にインスタンス化し、リフレクションを使用してメソッドを呼び出す最良の方法は何ですか?
次の Java コードと同等の Scala を実行したいと思います。
上記のコードでは、クラス名とメソッド名の両方が動的に渡されます。上記の Java メカニズムはおそらくFoo
およびhello()
に使用できますが、Scala の型は Java の型と 1 対 1 で一致しません。たとえば、クラスはシングルトン オブジェクトに対して暗黙的に宣言される場合があります。また、Scala メソッドでは、あらゆる種類のシンボルをその名前にすることができます。両方とも、名前マングリングによって解決されます。Java と Scala の間の相互運用を参照してください。
もう 1 つの問題は、Scala からの反射 - 天国と地獄で説明されている、オーバーロードとオートボクシングの解決によるパラメーターの一致のようです。
delphi - Delphi-BPLの名前のマングルを解除する
Delphiでこのような名前を解読することは可能ですか?もしそうなら、どこでより多くの情報を入手できますか?
dbrtl100.bplで特定のエントリが見つからないエラーメッセージの例どの正確な関数(ユニット、クラス、名前、パラメータなど)が見つからないか知りたい。
それがDbcommonユニットのメソッドGetTableNameFromSQLExであることは知っていますが(私はRTL / VCLソースを備えたDelphiを持っています)、すべてのコードが利用できるわけではないアプリにぶつかることがあります(はい、クライアントは常にサードパーティのすべてのソースコードを購入する必要があります)ものですが、そうでない場合もあります)。
しかし、これは私がコードを持っていない、またはインターフェイスファイル(BDE.INTは誰か?)だけを持っている例だとしましょう。どのパラメータがありますか(つまり、どの潜在的な過負荷)?どのような返品タイプがありますか?
これはどのDelphiバージョンでも同じですか?
--jeroen
編集1:
Rob Kennedyに感謝します:tdump-edbrtl100.bplがそのトリックを行います。-umはまったく必要ありません:
編集2:
このドイツ語のEDN記事(英語のGoogle翻訳)を見つけたTOndrejに感謝します。その記事はフォーマットをかなり正確に説明しており、これを解くためのDelphiコードを作成することが可能であるはずです。
作者が言及しているウェブサイト(および電子メール)は現在は機能していませんが、この情報を知っておくとよいでしょう。
--jeroen
c++ - Visual Studio SDK で関数名の装飾を解除する
Visual Studio が生成するマングルされた C++ 名の装飾を解除するには、undname.exe
.
しかし、装飾を解除する必要があるたびに本格的なプロセスを作成するオーバーヘッドを回避したい場合はどうすればよいでしょうか?
Visual Studio SDK に同等の機能はありますか (VS2005 でサポートされる必要があります)?
c++ - GDB の逆アセンブル コマンドで表示される壊れた C++ 識別子を切り詰めるにはどうすればよいですか?
GDB の逆アセンブル コマンドは、mainなどの短い C 識別子に適しています。長くて壊れた C++ 識別子の場合、冗長性は過剰です。たとえば、icpc を使用すると、次のような結果が表示されます
CLI では長い表示が煩わしい。それらは、GDB の TUI アセンブリの表示をほとんど役に立たなくします。
切り捨てられた識別子を表示するように GDB に指示する方法はありますか? 50 文字を除くすべてをクリップしますか?