問題タブ [stdcall]
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.
json - TJSONObject ToString メソッド アクセス違反
TJSONObject を返す dll 関数を呼び出します。問題は、この値をTStringList
アクセス違反例外に追加しようとすると発生することです。これが私のコードです:
そして、これは示されているエラーです:Exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'
assembly - ASM Function Call & Ret - ret 0xC は何をしますか?
ret は何をしますか? ここで ret 0xC が必要なのはなぜですか? ret 0xC または 0x4 ではなく、単に ret であった場合はどうなるでしょうか。
c# - stdcall 呼び出し規則と C# での pinvoke の使用
以下の 2 つの空の関数を含む DLL ファイルを作成しました。
C# では、DLLImport
以下のように属性を使用して関数を呼び出すことができました。
そのため、属性LoadLibrary()
の代わりにkernel32.dllを直接使用して再試行しました。DllImport
ただし、 MyFunc2()が機能する場所で MyFunc1( ) を呼び出すと、ランタイム エラーが発生します。
そこで、C++ で置き換え__stdcall
、__cdecl
DLL を再コンパイルしてから、C# で MyFunc1() を再度呼び出しました。
そして..うまくいきました。
いったいなぜ __stdcall 呼び出し規約が C# の pinvoke で機能しないのですか?
c - __STDCALL と混同
exe から dll と通信しようとしていますが、dll に WINAPI を追加すると、GetProcAddress() の呼び出し中に NULL 値が返されます。
サンプルコードは次のとおりです。
EXE:
DLL:
ヘッダー ファイル:
ソースファイル:
同じコードを WINAPI 呼び出しなしで実行すると、GetProcAddress() で NULL 以外の値が取得されます。
誰でもこれで私を助けることができますか?
ありがとう。
c++ - kernel32、user32 などの任意の関数を動的に呼び出す
IDE: Code::Blocks コンパイラ: g++ 4.5.4 (Mingw32_i686 から) タイプ アプリケーション: コンソール タイプ
Ok
コードを示しますが、期待どおりに動作しません。このコードは私の欲求を示すはずです。
4 つのラッパー関数を使用して winapi 関数を発生させたいと考えています。
F
- 関数は何も返さず、入力パラメータもありません
F_
- 関数は何も返さないが、入力パラメータを持っている
_F
- 関数は値を返しますが、入力パラメータがありません
_F_
- 関数は値を返し、入力パラメータを持ちます
コンパイル時ではなく、関数の戻り値の型とランタイム関数に渡されるパラメーターの型を定義したいと考えています。
もちろん、コンパイル時に関数に渡されるパラメーターの数も決定したくありません。
何か案は?これは可能ですか?
更新:
ありがとうロドリゴ
libffi 3.0.6 win32 (テスト コンソール アプリケーションで libffi.dll.a とヘッダー ファイルを使用) をダウンロードしましたが、「libffi-5.dll が見つかりません」という警告が表示されました。
http://rpm.pbone.net/index.php3/stat/4/idpl/24142309/dir/fedora_16/com/mingw32-libffi-3.0.9-2.fc15.noarch.rpm.htmlをダウンロードし、解凍しました、C:\Mingw32\bin にこの .dll のコピーである libffi-5.dll が見つかりました。
テストのコード:
はい!私は働くコードを持っています!
私はこの問題を引き続き研究します。