私はWindows 7 Ultimate 32ビットでDevC++を使用しており、自分のプログラムにwindows.hとpsapi.hを含めています。これまで使用してきたすべてのWindows APIは、GetProcessIdとDebugActiveProcessStopを除いて動作します。コンパイラは、どちらの場合も、指定された関数が宣言されていないことを返します。しかし、winbase.hを見ると、GetProcessIdが宣言されていることがわかります。関数上にマウスを置いても、構造に関する情報が表示されます。だから、なぜコンパイラはどちらの関数を認識するように見えないのですか?Win32 API関数が見つかりません
答えて
Win32 APIヘッダーを使用する場合は、対象とするオペレーティングシステムのバージョンを指定する必要があります。これはMSDN libraryに記載されています。
最近、NTDDI_VERSIONを定義することでこれを行うことになっています。 GetProcessIdのドキュメントを確認する場合は、Windows XP SP1が必要であることに注意してください。したがって、ターゲットオペレーティングシステムのバージョンとしてNTDDI_WINXPSP1以上を指定する必要があります。うまくいけば、グリッチのほとんどがされているものの、予想通り、私はNTDDI_VERSIONを定義することは常に動作しないことがわかってきました
過去に#define NTDDI_VERSION 0x05010200
:SP1は、もはやあなたがSP2でオフおそらく優れているサポートされているので、実際には今すぐアイロンをかけました。動作しない場合は、古いマクロ_WIN32_WINNTを代わりに使用してください。これは上記のリンクにも記載されています。この場合、あなたがしたい:あなたは後でVistaまたはWindows 7で導入された機能を使用する必要がある場合
#define _WIN32_WINNT 0x0502
は、適切NTDDI_VERSIONまたは_WIN32_WINNTの値を変更します。各関数のMSDNライブラリドキュメントには、導入されたオペレーティングシステムのバージョンが記載されています。
YES !!! 2番目の#defineが機能しました。ありがとう!!!!! –
この問題は、Windows APIでコーディングするときにポップアップすることがあります。関数がヘッダファイルにあることがわかりますが、なんらかの理由でコンパイラの意見が一致しません。この問題に遭遇したら、ヘッダーファイル内の関数を見つけて、その周りのプリプロセッサのディレクティブを探します。その関数を使用するために何かを定義する必要があるかもしれません。この場合
は、ここで私はあなたが問題を抱えている機能のために見つけたものです:
#if (_WIN32_WINNT >= 0x0501)
WINBASEAPI DWORD WINAPI GetProcessId(HANDLE);
#endif
と
#if (_WIN32_WINNT >= 0x0501)
WINBASEAPI BOOL WINAPI DebugActiveProcessStop(DWORD);
#endif
だから、あなたは窓があり、あなたのメインコードファイルにヘッダー、この定義を入れる前に、Windowsヘッダーをインクルードする:
#define _WIN32_WINNT 0x0501
これはsolあなたの問題。幸運^ _^
これで問題が解決しない場合は、リンカー設定からkernel32.libを削除していないことを確認します。 –
@druciferreそれはリンカエラーの代わりに束を引き起こすでしょうか? – Gogeta70
彼は正確なエラーを投稿しなかったので、リンカエラーである可能性があります。また、彼は明示的にこれが** only **のエラーであるとは決して言わなかった。私は '_WIN32_WINNT'の定義が根本的な原因であることを賭けています。しかし、もしそうなら、私はコメントを追加すると考えました。 –
- 1. Lua.h関数定義が見つかりません
- 2. 未定義の関数/関数が見つかりません
- 3. libpqでPQexec()関数が見つかりませんでした
- 4. Google Apps Script Execution API:スクリプトエラーメッセージ:スクリプト関数が見つかりません:[JavaScript]
- 5. 関数定義が見つかりませんか?
- 6. 変数が見つかりません
- 7. 変数が見つかりません
- 8. js関数にエラーが見つかりません
- 9. オブジェクト内にsetFullYear関数が見つかりません - Googleスクリプト
- 10. 関数getUiがオブジェクトに見つかりませんフォーム
- 11. 角射撃 - $ add関数が見つかりません
- 12. javax.el.ELException:関数 ':空' が見つかりません
- 13. ユーザー定義関数が見つかりません
- 14. 関数構造内のプロトタイプ - Intellisenseが見つかりません
- 15. async waterfall最終コールバック関数が見つかりません
- 16. TypeError:オブジェクト内にgetId関数が見つかりません
- 17. 関数の識別子が見つかりません
- 18. ColdFusion - 関数[functionName]が見つかりませんでした
- 19. 角4のファイヤーベース//関数がコールバックに見つかりません
- 20. Qt Creator Qt 5.7 OpenGL関数が見つかりません
- 21. Entity Frameworkのストアドプロシージャの関数が見つかりません
- 22. Jquery関数が見つかりません
- 23. R - オブジェクトがユーザー定義関数に見つかりません
- 24. GLFW関数が見つかりません
- 25. 関数が見つかりませんでしたmutate_if
- 26. Googleスクリプトtypedefエラー:関数が見つかりません
- 27. 関数内のオブジェクトが見つかりません
- 28. openpyxlモジュール - openpyxl.utils.dataframe.dataframe_to_rows関数が見つかりません
- 29. Rはfct_recode()関数が見つかりません
- 30. GLSL:私のカスタム関数が見つかりません
プリコンパイラ指令ではおそらく除外されています。あなたはチェックしましたか? –
Dev-C++の使用が必要な場合を除いて、[Dev-C++ tag wiki](http://stackoverflow.com/tags/dev-c%2b%2b/info)の内容に細心の注意を払うことを検討します。 )。 –
補足として:GetProcessIdとDebugActiveProcessStopは、Windows SDKのv7.0Aでは条件付きではありません。おそらく、Windows 2000とXP Goldが両方ともサポート外となっているからです。 SDKヘッダーが期限切れになっている可能性があります。 –