問題タブ [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 に答える
2960 参照

c - GCC でエクスポート名マングリング スキームを変更するものはありますか?

私が持っているプロジェクトをビルドしようとしていますが、エクスポートされた関数がいくつかあります。関数は stdcall 規則に従い、GCC でコンパイルするとマングルされます。

他のコンパイラは、次のように名前をマングルします。

GCCにエクスポートされた関数の名前を後の例にマングルさせる方法はありますか?

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

c# - コンパイラによって生成されたCruft

RegGateのReflectorを使用してアセンブリからソースを回復しようとしています。元のソースは、いくつかのC#3.0機能を利用していたため、回復が少し困難でした。たとえば、ここに匿名タイプの復元されたソースがあります。最初にポップアップするのは、クラス識別子の<>inです。実行時型の命名規則は、設計時の規則よりも明らかに自由です。けっこうだ。簡単な検索と置換で修正されます。他にどのようなコンパイラマングリングに注意する必要があり、どのように対処すればよいですか?

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

python - Python: 動的クラス生成: メンバーの上書き

実行時に拡張したいpythonクラス階層があります。さらに、この階層のすべてのクラスには、すべてのサブクラスで上書きしたい静的属性「dict」があります。簡単に言うと、次のようになります。

'dict' は保護された (公開されていますが、先頭にアンダースコアが付いている) メンバーです

これは期待どおりに機能します。問題は、次のとおりです。属性をプライベートに宣言すると、なぜ機能しなくなるのですか。

プライベートメンバーである「dict」と同じこと

突然D、 のサブクラスのC'dict' の値がそのスーパークラスと同じになる!?

誰か親切に説明してくれませんか、これの理由は何ですか?前もって感謝します!

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

c++ - STL 対応の c++filt を探しています

私の開発環境では、GNU C++ 3.4.6 を使用してコード ベースをコンパイルしています。コードは開発中であり、残念ながら時々クラッシュします。デマングラーを介してトレースバックを実行できるのは素晴らしいことです。私は c++filt 3.4 を使用しています。問題は、関数に多数の STL パラメータがある場合に発生します。検討

この関数がトレースバックにある場合、私のプラットフォームでの破損した出力は次のようになります。

c++filt は親切にデマングルします

これは、テンプレートの使用時に発生するコンパイラ エラーと同じ問題です。ただし、STL はかなり規則的で認識可能なテンプレートのパッケージです。だから私が望んでいるのは、誰かが元の関数シグネチャに近いものをダンプする c++filt の拡張バージョンを作成したことです。ヒントはありますか?

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

gdb - 逆アセンブリモデルでgdbに元の非マングリング関数名を表示させる方法は?

であることが判明

すべての逆アセンブルはマングリングされた関数名のみを表示しますが、プログラマーがマングリングを解除して元の関数名を取得するのは簡単ではなく、マングリング名が一致するinfo symbol addressたびに入力する手間がかかるため、gdb に非マングリングを表示させる方法はありますか?アセンブリモデルの関数名?

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

java - g ++:エクスポートされたシンボルのマングルを解除する方法

JNIを使​​用するJavaライブラリをコンパイルしようとしています。プログラムを起動すると、UnsatisfiedLinkErrorでクラッシュが発生します。これは、DLLで特定のメソッドが見つからなかったことを示しています。

よく調べてみると、コンパイルとリンクに使用しているg ++が、メソッド名に「@8」や「@16」などのサフィックスを追加してメソッド名を壊してしまったことがわかりました。名前マングリングを無効にする正しいコンパイラオプションを知っている人はいますか?前もって感謝します!

編集:私はEclipse+CDTプラグインを介してMinGWを使用しています。

0 投票する
5 に答える
1706 参照

c++ - CとC++のリンケージの違いは?

ここSOの外部/内部リンケージに関する既存の質問を読みました。私の質問は異なります - と の下の異なる翻訳単位に外部リンケージを持つ同じ変数の複数の定義がある場合はどうCなりC++ますか?

例えば:

Dev-C++ を C プログラムとして使用すると、上記のプログラムは完全にコンパイルおよびリンクされます。同じものをC++プログラムとしてコンパイルすると、複数の再定義エラーが発生します。なぜ C で動作する必要があり、C++ との違いは何ですか? この動作は未定義であり、コンパイラに依存していますか? このコードはどの程度「悪い」のでしょうか? また、リファクタリングしたい場合はどうすればよいですか (このように書かれた古いコードがたくさんあります)。

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

c++ - GCC の RTTI 名を文字化けできますか?

gcc を使用して、typeid を使用してオブジェクト/変数の型を要求すると、type_info::name メソッドから、Windows で得られると予想される結果とは異なる結果が得られます。少しググったところ、RTTI 名は実装固有であることがわかりました。

問題は、Windows で返される型の名前を取得したいということです。これを行う簡単な方法はありますか?

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

java - JavaでWindowsファイル名を解除するにはどうすればよいですか?

Javaから、File.createTempFile()を使用して指定された場所に実行可能ファイルを抽出しています。実行可能ファイルを実行しようとすると、出力の最初の行を読み取ろうとするとプログラムがハングします。

別のプログラムから同じ抽出実行可能ファイルを実行しようとすると、ディレクトリをC:\ Documents and Settings \ username \ Local Settings \ Temp\prog.exeとして指定すると機能することがわかりました。しかし、ディレクトリをC:\ DOCUME〜1 \ USERNA〜1 \ LOCALS〜1 \ Temp \ prog.exeと指定すると、ハングします。

プログラムでチルダファイル名を解除して、機能するディレクトリ名を指定できるようにする方法はありますか?

(そして、私は常に言語とAPIの設計の問題に対処するのが好きなので、Java File.createTempFile()とjava.io.tmpdirが壊れたファイル名を評価しなければならない理由はありますか?)

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

asp.net - コンテンツページでのCSSとコントロール名のマングリング

マスターページのあるシンプルなウェブサイトがあります。コンテンツページの要素(などTextbox)にプロパティを設定するには、CSSを使用します。デザイナーではうまく機能しますが、サイトを立ち上げると、コントロールにスタイルが適用されません。理由は簡単です。つまり、コンテンツページにTextBoxwithがあり、に配置されます。CSSファイルで、idを持つオブジェクトのプロパティを設定しました。マスターページ名のマングリングが原因でサイトを起動すると、マスターページに含まれているCSSファイルで定義されていないようなIDが取得されます。id="TextBox1"ContentPlaceHolder1#TextBox1ctl00_ContentPlaceHolder1_TextBox1

この問題の正しい解決策は何ですか?マングルされた名前をハードコーディングするのは良くないようです。