問題タブ [getprocaddress]
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++ GetProcAddress() は静的クラスのメソッドを見つけることができません
C++ で dll を動的にロードする必要があります。
このチュートリアルhttp://msdn.microsoft.com/en-us/library/ms235636.aspxに従ってdll を作成すると、すべて正常に機能しました。
次に、このhttp://msdn.microsoft.com/en-us/library/64tkc9y5.aspxに従い、コンソール アプリケーションを次のように調整しました。
DLL は正しく読み込まれ、null ではありません。問題は、常に 0 を返す GetProcAddress() 関数です。
名前空間、クラス名、メソッド名のすべての組み合わせを試しました。関数名の @ の代わりにスコープ演算子 (::) を使用しようとしました。
名前空間全体を extern "C" として定義しようとしましたが、何も変わりません。コンソール アプリケーションを実行またはデバッグするたびに、「乗算」機能が見つかりません。
私は何かが足りないと思います...どこが間違っていますか?
編集
Dependency Walker により、次のエクスポート テーブルが公開されました。
ここで、関数名の最後の部分が何を意味するのだろうか... __declspec(dllexports) がこれらのシンボルを追加するのはなぜですか?
c++ - C++ で DLL を作成して VS 2005 に C++ DLL をインポートする
C++ DLL を、これから作成する新しい C++ DLL にリンクしようとしています。
以下のチュートリアルと他の多くのチュートリアルを順を追って実行しましたが、「GetProcAddress」関数が NULL を返す「http://www.dreamincode.net/forums/topic/118076-dlls-explicit-linking/」
これは、DLL から呼び出そうとする関数のプロトタイプです。
int RemoveAllDataFile( unsigned int id );
関数は 1 を返すため、DLL は正常にロードされます。
}
c++ - 実行時にサードパーティ ライブラリ dll からクラスをロードして使用する方法
いくつかの dll (つまり、Qt フレームワークの dll) があり、実行時にそれを読み込んで使用したいと考えています。私はそれをロードする方法を知っています -LoadLibrary
この dll へのハンドルを取得しました。しかし、次は何ですか?たとえば、このライブラリ内にあるクラスを使用したい場合、QString
どうすればエクスポートできますか? それはまったく可能ですか?
c++ - 装飾された C++ 関数を C++ にインポートするための GetProcAddress
Visual C++ 2013 で、「プラグイン」プロジェクトから関数をエクスポートしようとしています。
これは、「アプリケーション」プロジェクトによって実行時にリンクされる動的 dll にコンパイルされます。まず、関数ポインター型を定義します。
次のように使用されます。
ただし、GetProcAddress
NULL を返します。
C 関数を ( を使用して) エクスポートextern "C"
し、 を使用して同じ DLL からインポートできることを確認できGetProcAddress
ますが、C++ 関数のインポートに失敗します。たとえば、これは機能します:
それから
だから私の推測では、registerFactories
. C++ の型を扱う必要があるため、理想的には なしでこれを行いたいと考えていますexport "C"
。
dumpbin.exe
見えるものは次のとおりです。
ファイル examplePlugin.dll のダンプ
ファイルの種類: DLL
編集 :
registerFactories
は に付ける名前ではありませんGetProcAddress
。マングルされた名前を bindump から手動でコピーします。例:
できます!したがって、以下の回答の多くは、実行時にこのマングルされた名前を発見することに関連しています。