問題タブ [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++ - .so ファイル内のシンボルを一覧表示するにはどうすればよいですか
.so ファイルからエクスポートされるシンボルを一覧表示するにはどうすればよいですか? 可能であれば、それらのソースも知りたいです (たとえば、静的ライブラリから取り込まれた場合など)。
それが違いを生む場合、私はgcc 4.0.2を使用しています。
c++ - extern "C"{ #include が必要な理由C++で?
なぜ使用する必要があるのですか:
具体的には:
いつ使用する必要がありますか?
それを使用する必要があるコンパイラ/リンカーレベルで何が起こっているのですか?
コンパイル/リンクに関して、これを使用する必要がある問題をどのように解決しますか?
macos - $non_lazy_ptr による OSX 10.5 Leopard シンボル マングリング
Leopard が一部のシンボルを $non_lazy_ptr でマングルするのはなぜですか? さらに重要なことに、シンボルが $non_lazy_ptr でマングルされているため、未定義のシンボル エラーを修正する最良の方法は何ですか?
c++ - C++ : 装飾された名前を見つける
各メソッド名に割り当てられる装飾名を見つけるにはどうすればよいですか? DLL でエクスポートできるように、装飾された名前が何であるかを調べようとしています。
c++ - std::type_info::name の結果の解読
私は現在、特に呼び出し元の関数に関する情報を出力することになっているログ コードに取り組んでいます。これは比較的簡単なはずです。標準の C++ にはtype_info
クラスがあります。これには、typeid の付いたクラス/関数/etc の名前が含まれます。しかし、それはめちゃくちゃです。あまり役に立ちません。すなわちtypeid(std::vector<int>).name()
戻りますSt6vectorIiSaIiEE
。
これから有用なものを生成する方法はありますか? 上記の例のようstd::vector<int>
に。テンプレート以外のクラスでのみ機能する場合は、それも問題ありません。
解決策は gcc で機能するはずですが、移植できればもっと良いでしょう。ロギング用なのでオフにできないほど重要ではありませんが、デバッグには役立つはずです。
c++ - typeid()はg++で余分な文字を返します
上記のコードは、g++を使用してubuntuマシンでP3fooを出力します。fooだけでなくP3fooを出力する理由がわかりません。次のようにコードを変更した場合
3fooを出力します。
何かご意見は?
c++ - PHP拡張機能を構築するときに、マングルされていないC ++シンボルを確認するにはどうすればよいですか?
インストールされているC++ライブラリ(Boost Date_Time)に依存するC++で記述されたPHPモジュールがあります。
現在、config.m4ファイルで、次のようにライブラリをチェックしています。
現在、これは現在の環境で機能しますが、ライブラリまたはコンパイラの別のバージョンでこれが機能しなくなる可能性があることを痛感しています。
マングルされていないC++シンボルをautomakeに理解させるにはどうすればよいですか?
編集:
マングルされた名前をチェックするのは恐ろしいことですが、「nm -C」によって返されるシンボル名をチェックする方法はありません(例:boost :: gregorian :: bad_monthなど)。
automakeコマンドAC_LANG_CPLUSPLUS()への参照を見つけましたが、それを使用する方法と、ここで適用できるかどうかはわかりません。
c++ - c++ の名前マングリングを抑制する方法はありますか?
C++ で記述された DLL があり、いくつかのエクスポートされたメソッドの名前マングリングを抑制したいと考えています。メソッドはグローバルであり、どのクラスのメンバーでもありません。これを達成する方法はありますか?
ところで:私はVS2008を使用しています。
gcc - g++ を使用して、gcc を使用してビルドされたライブラリとリンクするにはどうすればよいですか?
gcc でビルドされた .a ライブラリを、g++ でビルドされたプログラムにリンクしようとしています。しかし、名前マングリングは異なります。これどうやってするの?ありがとう、CP