問題タブ [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.
windows - 実行時に、プログラムに関数が存在するかどうかを確認します
私はいくつかの関数定義によって拡張されることを意図したプログラムを書いています。プログラムをコンパイルする方法の1つは、コードをメインコードにリンクする単一の実行可能ファイルを作成することです。問題は、定義する関数の1つがオプションであり、それをテストする必要があるということです。
Linuxでは、これが私がしていることです:
「-rdynamic」オプションをg++に、または「--export-dynamic」オプションをldに設定してプログラムをコンパイルします。次に、次のようにldsymを使用します。
関数「fct」がプログラムに存在する場合、これはそのアドレスを返します。そうでない場合、それはNULLを返します。
さて、Windowsでは、私はそうすることができるはずです:
ただし、MinGW32ではg++に「-rdynamic」または「--export-dynamic」オプションはありません。したがって、これは機能しません。MinGW32を使用してWindowsで何をすべきか知っている人はいますか?
c++ - LoadLibrary と GetProcAddress を使用して WinSock 関数を呼び出す
基本的に、次のようなヘッダー ファイルがあります。
そして、私はこのようなことをします:
ただし、この関数 ((*start)(test, &wsdata) の行) を呼び出すと、次のエラー メッセージが表示されます。
sockets.exe の 0x7868146a で未処理の例外: 0xC0000005: アクセス違反。
呼び出し規約 (__cdecl、WINAPI、WSAAPI) を変更しようとしましたが、常に同じエラー メッセージで終了します。
dll - 可変引数に基づいて任意の dll 関数を呼び出す
構造体には次の項目があります:
- DLL 名 (絶対/相対パス)
- DLL 内の関数名
- パラメーターの数
- パラメーターの型と値の配列
この情報を使用して、dll をロードし、関数を呼び出す必要があります。
dll をロードするには、LoadLibrary を使用します。
関数のアドレスを取得するには、GetProcAddress を使用します。
関数を呼び出します。
dll をアンロードするには、FreeLibrary
関数の引数の数は動的であるため、引数を関数に渡す方法がわかりません。
パラメータをdll関数に渡す方法について、誰か詳細を教えてもらえますか?
ありがとう、V Karthick
winapi - GetProcAddress の仕組み
私はいくつかのグーグルを行いましたが、実際にはあまり見つかりませんでした。GetProcAddress はどのように機能しますか? 舞台裏で何が起こっているのですか?メソッド名とそれに対応するアドレスはメタデータのどこかに保存されますか?
dll - 64 ビット アプリケーションに 32 ビット DLL ライブラリをロードする
32 ビット DLL ライブラリ (LoadLibrary と同じ使用法) をロードする方法はありますか? GetProcAddress と共にその関数を使用したいと思います。
WOW を見ましたが、機能を提供していないようです。DependencyWalker などのツールは 64 ビットであっても 32 ビット dll のシンボルを読み取ることができるため、この機能は存在するはずです。
ありがとう
dll - GetProcAddressが関数を見つけることができません
「render()」という名前の関数を使用してDLLを作成し、それをアプリケーションに動的にロードしたいのですが、GetProcAddressがそれを見つけることができません。DLL.hは次のとおりです。
そしてここにDLL.cppがあります:
その機能を使おうとするアプリケーションは次のとおりです。
私の目標は、統合APIを使用して独自の.DLLを介してD3DとOpenGLの両方をサポートする3Dエンジンを作成することです。メモ帳で.dllを確認したところ、「render」という文字列がありました。
c# - dllimport と getProcAddress の違い
まず、dllimport 属性と getProcAddress 関数を直接比較しても意味がないことはわかっています。むしろ、dllimport 属性または getProcAddress 関数を使用して関数をインポートすることにより、基本的に同じこと (dll で関数を呼び出す) を実現する 2 つのコードを比較することに興味があります。具体的には、私が作成した dll の関数を使用する C# アプリケーションを作成しています。最初に、次のコードで dll 関数にアクセスしました。
ただし、dll 呼び出し中に設定されていた場合は、後で lastError 値を取得する必要があったため、コードを次のように変更しました。
もちろん、これははるかに整頓されており、前述のように、lastError コードを設定します。明らかに、私の最初のコードでは、実行時に dll と関数呼び出しを変更できる可能性がありますが、現時点ではこれは必要ありません。したがって、私の質問は次のとおりです。別のdllまたは別の関数を使用しないことが確実である場合、最初の定式化を使用する理由はありますか?
c# - C# GetProcAddress がゼロを返す
何らかの理由で、私の C# .NET 2.0 アプリケーションが呼び出しを行うたびに、GetProcAddress
常にゼロが返されます。
関数名のスペルが正しいと確信しており、常にゼロ以外の値が割り当てられている_fullPath
ため、おそらく正しいと思われます。_dllHandle
あなたが提供できるかもしれないどんな洞察も高く評価されます。ありがとう。
winapi - x86 プロセス内の x64 プロセスから user32.dll 関数アドレスを見つける方法は?
x86 プロセス内の x64 プロセスから user32.dll 関数アドレスを見つける方法は?
編集: 私のプログラムは x64 を実行し、x86 アドレスを検索しています。
delphi - Delphi と C++ の WinAPI 関数のアドレスが異なる場合に異なる
GetProcAddress
C++ では、Windows API 関数の関数ポインターを取得しようとすると、そのポインターは、その関数の名前とそれぞれのモジュールで使用した場合に取得するのと同じアドレスを指します。例えば:
でしょうtrue
。しかし、Delphi ではそうではありません。このコード:
ではなく、true
私のテストで@MessageBoxA
は0x0040bd18
、同等GetProcAdress
のものがテストの C++ の対応するものを返したのに対し、. でした0x7550fd1e
。
それでは、私の質問です。なぜですか?