問題タブ [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.
linker - シンボルのバージョン管理を実現する方法
私は以下のようなものを達成したい:
ライブラリの複数のバージョンがあります。dlopen() を使用してライブラリの最新バージョンを動的に読み込みます。次に、特定の関数 (同様の戻り値の型と引数リストと共に) がそのバージョンに存在するかどうかを確認したいと思います。開いている場合は、以前のバージョンにフォールバックして同じことを確認します。
「バージョン スクリプト」に関する投稿を見たことがありますが、使用できません。また、関数名のみをチェックするため、シンボルテーブルを検索しても解決策にはならないと思います。
c++ - Mingw でのマングリング/エクスポートの問題
私は Windows で Netbeans と MinGW を使用して共有 C++ DLL に取り組んでいます。
私の最初の質問は: MinGW と Microsoft Visual C++ の間でマングリングは異なりますか? マングリングはコンパイラ固有であると読みましたが、本当ですか? MinGW を使用して、MVC++ と同じマングリングを取得する必要がありますが、これは可能でしょうか?
Dependency Walker を使用して、エクスポートされた関数も C と見なされることを発見しました (私のコードでは C としてエクスポートされません)。これは DepWalker の制限によるものですか、それとも何らかの理由で MinGW が私のライブラリを C としてエクスポートしているためですか? (「export C」を使用すると、マングリングが表示されなくなりましたが、使用しないと、名前のマングリングが表示されます(MVC++に基づいて期待していたものとは異なります)が、「C++」ではなく「C」アイコンが引き続き表示されることを確認しました"。
リンクコマンドは次のとおりです。
g++.exe -static-libgcc -static-libstdc++ -shared -o my.dll -s 1.o 2.o ... n.o other.dll -static
よろしくお願いいたします。
objective-c - Objective-Cでメソッドの関数名を取得するには?
私の知る限り、メソッドは次のような関数にコンパイルされます。
メソッドを引数として C 関数に渡すことができるように、セレクターの関数の名前を取得することは可能ですか、それとも不可能ですか?
c - グローバル静的/非静的変数はcでどのようにマングルされますか?
var関数内の静的変数は、のfuncように名前が付けられるとvar@func想像できます。
グローバル静的変数と非静的変数はどうですか?
c++ - Python 用の C++ 名前マングリング ライブラリ
Python プログラムで C++ 関数名をマングルおよびデマングルしたいと考えています。そのようなものはありますか?何時間も探しましたが、ここで運が良かったのかもしれません...
jquery - jQuery および ASP.NET ユーザー コントロールを使用するときに要素 ID を処理する方法
ASP.NET には、単純な HTML として使用しているユーザー コントロールがいくつかあります。つまり、コード ビハインドはありません。
私は 1 つのコントロールに固定 ID の要素があり、いくつかの jQuery クライアント スクリプトでそれを指しています。例えば:
これは問題なく非常にうまく機能します。しかし、これには副作用があります。実際、ページに同じユーザー コントロールの 2 つのインスタンスを追加すると、同じ ID を持つ 2 つの要素が作成されます。
このような状況に対処するための良い方法はどれだと思いますか?
ありがとう
c++ - Qt (C++) でサードパーティ ライブラリ (libconfig) を使用する
サードパーティ ライブラリ (libconfig++) を Qt で動作させるのに問題があります。
Qt でコンパイルすると、次のようなエラー メッセージが表示されます。
等
私の .pro ファイルには、次のものがあります。
そして、libconfig++.dll と libconfig++.lib を正しいフォルダーに追加しました。
このプロジェクトは別のサードパーティ ライブラリを (同様の方法で) うまく使用しているため、構文やインクルードの問題ではないと思います。
C++ の名前マングリングの問題であると思われますか? どうすればこれを確認できますか?
現在、VS 2008 でライブラリをビルドしています (動的ライブラリと静的ライブラリの両方としてビルドしようとしましたが、どちらも機能しません)。過去に他のライブラリでこれを行うことができたと思います。私が正しく設定していないVSにいくつかのフラグがありますか?
ありがとう
c++ - コンパイラにとらわれないFortran名マングリング関数
私はFortran静的オブジェクトに動的にリンクしており、(実行時に)Fortran関数の名前(C ++文字列)を取得し、コンパイラーに適切な名前を付ける必要があります。この目的に役立つビルド済みの関数はありますか?静的にリンクされたケースでは、autoconfのFC_FUNCを使用しています。
明確にするために、文字列を受け取り、それをfortranサブルーチン名として解釈し、指定されたコンパイラーに適切にマングルできる関数が必要です。psuedo-C ++では、:
私自身、この神秘的な「FortranMangle」関数を作成するために使用される名前マングリングスキームのすべてを知っているわけではありません。
visual-c++ - Visual C++ 6.0 の名前マングリング、extern "C" および dllexport 内でも、RPC スタブが生成されない
C# dll を呼び出すことができるように、レガシ ビジュアル C++ 6.0 dll プロジェクトで新しい関数の作成に取り組んでいますが、名前マングリングのためにそれを行うことができません。 、(名前を表示するためにdumpbinを使用しました)ここに関連するコードがあります
これは、ヘッダー ファイルを大幅に縮小したバージョンです。
およびcppファイルの場合
dumpbin は、次の 1 0 00001401 ?V7ssGetFileDirInfoUnicode@@YAKPBDW4tag_V7_FILE_LIST_TYPE@@000PAKPAG2@Z を返します。
私が望んでいたものではなく、理想的には V7sGetFileDirInfoUnicode のみです
私が知る限り、私がこれをやろうとしている方法を読んでいることから、.defファイルでこれを定義する必要はありません。奇妙なのは、正しく表示される既存の関数と同じ extact セットアップに従っていることです。
どんな助けにも感謝します.Thanks!
アップデート
.def ファイル オプションは名前マングリングではない限り機能します。MIDL コンパイラは RPC スタブを作成していないと言われていますが、これら 2 つの問題は関連していると思います。
また、Cファイル自体から取得したMIDLバージョンもここにあります