問題タブ [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.
stack - stdcall と cdecl のスタック アラインメント サイズ
2 つの質問があります。
- stdcall 呼び出し規則のスタック アラインメントは常に4 バイトですか、それとも 32 ビット マシンの場合は 4 で、64 ビット マシンの場合は 8 ですか?
- cdecl のスタック アラインメント サイズは?
Microsoft Visual Studio 2010 を使用しています。
c++ - __stdcall関数ポインタのテンプレート部分特殊化
上記のコードでは、Visual C++2010で次のエラーが発生します。
ご覧のとおり、__stdcall修飾子の問題です。これはコンパイラのバグですか?
c# - declspecおよびstdcallとdeclspecのみ
私はC++dllインポートトピックの初心者で、質問は非常に簡単かもしれませんが、Googleで見つけることができません。
私は非常に単純なC++win32 dllを持っています:
このメソッドをC#から呼び出すと、問題はありません。ここにC#コードがあります。
予想どおり、出力は「これはC#プログラムです」「こんにちは」です。
ここで、C関数の宣言を次のように変更するとします。
__stdcallがなければ、私も問題はありません。問題は次のとおりです。
__declspec(dllexport)TYPE __stdcallが本当に必要なのはいつですか?また、__ declspec(dllexport)TYPEのみを使用できるのはいつですか?
どうもありがとう。
python - Pythonでctypesを使用して呼び出される関数の正しいコールバック署名は何ですか?
DLL から呼び出されるコールバック関数を Python で定義する必要があります。
このコードを試してみました.Python 2.5では動作するようですが、Python 2.7ではクラッシュし、何か間違ったことをしたと思います.
間違いはどこですか?
注: プラットフォームは 32 ビットのみで実行されます (Windows と Python の両方)。DLL は正常にロードされ、内部の他の関数も Python から呼び出されたときに正常に動作します。
これを再現する完全なサンプル コードは、https://github.com/ssbarnea/pyHikvisionで入手できます。py25 および py27 で Video.py を実行するだけです。
c++ - __stdcall および Boost 1.47.0 でエラー log4cxx をコンパイルする
お役に立てば幸いです。
私のIDEはVS2010です。
私はboost 1.47.0、特に boost::asio を使用しています。
数日間の開発の後、log4cxx を追加することにしました。
log4cxxは呼び出し規約を__stdcallに変更する必要があります
意外とコンパイルエラーが多かったです。それらは ~ 70 エラーです。
私は少しグーグルして、これらを見つけました:
助けになる。現在、エラーは 10 個までです。ここにあります:
どうすれば解決できますか?ちょっとしたアイデアやヒントはありますか?
c++ - mingw32 g++ および stdcall @suffix
次のようにプロトタイプ化されたいくつかの C++ 関数を宣言しました。
エクスポートされたサードパーティのdllもいくつかありますfunction()-名前の装飾はまったくありません。undefined reference to function@...MinGW の stdcall @-suffix が原因で、exe または dll をビルドできません。@... プレーン関数名なしでオブジェクトファイルを取得するにはどうすればよいですか?
c++ - stdcallを介してdllへの文字列を操作する際の問題
stdcallを介して別のプログラムから呼び出されるC++dllを作成する必要があります。
必要なもの:呼び出し元プログラムは文字列の配列をdllに渡し、dllは配列内の文字列値を変更する必要があります。呼び出し元プログラムは、dllから取得したこれらの文字列値を引き続き処理します。
私は簡単なテストプロジェクトを作成しましたが、明らかに何かが欠けています...
これが私のテストC++dllです:
これが、テストdllのテストに使用している単純なC#プログラムです。
そして、ここに生成された出力があります:
いくつか質問があります:
1)要素を最初の位置ではなく配列の2番目の位置に出力するのはなぜですか?
2)dllファイルで//////でコメントされた行のコメントを外すと、プログラムがクラッシュします。なんで?
3)明らかに、dll(/ * * /内の部分)で現在よりも多くのことを実行したかったのですが、最初の2つの質問によってブロックされています...
ご協力ありがとうございます
visual-c++ - Mingw で VS2008 プロジェクトへの静的ライブラリ リンクを作成しましたか?
私は何をしようとしていますか?...
まず、MinGW の g++ コンパイラでスタティック ライブラリを作成します。
したがって、簡単なサンプルファイルは...
test.h
test.cpp
コンパイラ コマンドを使用する場合:
と
ファイル「libtest.dll」および「libtest.a」が作成されます。なぜ両方が必要なのですか?VS2008 プロジェクト (MSVC++) でライブラリを使用する場合は、両方のファイルが必要なので、MinGW のサイトでそれを読みました。
次に...ライブラリから関数「何でも」を呼び出すVS2008 Win32コンソールアプリケーションプロジェクトを作成しました。
main.cpp
VS2008: 「プロパティ-->リンカー-->一般->追加のライブラリ ディレクトリ」以前に作成したライブラリへのパスを追加し、「プロパティ-->リンカー-->入力-->追加の依存関係」に「libtest.ファイル。プロジェクトをビルドしてcomileしてリンクするとOK、exeファイルが生成されるのですが、exeを実行しようとすると...セグメンテーション違反が発生します(はい、「libtest.dll」は.exeファイルと同じフォルダにあります)!!! 理由がわかりませんか?「__stdcall」はコードで使用されているため、スタックにプッシュしても問題ないはずです...
何か提案はありますか?
mfc - 関数の前に CALLBACK または WINAPI または PASCAL (MFC の場合) を使用することは絶対に必要ですか、それとも読みやすくするためだけですか?
ではMFC VC++、setTimer関数をCALLBACK手順で設定します。私が読んだリンクから
__stdcall でマークされた関数は、すべての Win32 API 関数 (可変引数を取るいくつかを除く) が使用するため、そのように命名された標準呼び出し規則を使用します。
そして、それから、これは私が理解していることです。すべてのVC ++ MFC関数__stdcallは、呼び出し変換として使用されます。
そしてCALLBACK、次のように定義されています....
私が読んだこと:
CALLBACK を関数の前に置くことは、特定の関数が必要に応じて自動的に呼び出されることを強調するために使用されます (このsetTimer場合またはonClickJavaScript の場合のように)。
私の疑問は、MFC VC++ では、すべての関数 (可変引数を取るいくつかを除く) には、__stdcall の既定の呼び出し規則があります。CALLBACKしたがって、関数の前または前に or を付けなくWINAPIてPASCALも同じ効果がありますか?