0

xp より前の古いコンパイラから RawInput API 呼び出しを使用する必要があります (具体的には borland 5.5 です。他のコンパイラを使用するように言わないでください。それは問題外です。使用する必要があります)。

Ist ヘッダーの winuser.h と user32.lib には生の入力呼び出しが含まれていません。他のコンパイラのヘッダーと user32.lib には決して含まれていません。そのような外部 rawinput .h 定義を使用して、最新の user32.lib にリンクすることは達成可能ですか?

私はリンカの経験があまりありません。定義はコンパイルされますが、リンクに未解決の外部があります

エラー: C \CODE2\PROGRAM\MAIN.OBJ から参照されている未解決の外部 '__stdcall GetRawInputDeviceList (tagRAWINPUTDEVICELIST *, unsigned int *, unsigned int)'

エラー: C:\CODE2\PROGRAM\MAIN.OBJ から参照されている未解決の外部 '__stdcall RegisterRawInputDevices(const tagRAWINPUTDEVICE *, unsigned int, unsigned int)'

古い user32.lib を新しい user32.lib に置き換えても効果がないようです (名前を変更しても効果がないようで、コンパイラは user32.lib にまったく触れないようです (?)

それを機能させる方法、これを解決する方法のアドバイスのための多くのtnx(そして、新しいコンパイラが必要だと言わないように、この古いものでそれを行う必要があります)

(火)

// 編集 : winuser.lib を user32.lib に修正しました (user32.lib を意味していました)

4

2 に答える 2

1

一部の Windows プラットフォームには存在し、他のプラットフォームには存在しない API を呼び出す必要がある場合は、関連する LIB に静的にバインドしてはいけませんが、動的に (LoadLibrary と GetProcAddress を使用して) バインドしてはなりません。もう 1 つのメカニズムは、遅延ロード ライブラリを使用することです。

于 2012-05-29T12:01:43.960 に答える
1

GetRawInputDeviceListRegisterRawInputDevicesどちらもwinuser.libではなくuser32.libにあります

http://msdn.microsoft.com/en-us/library/windows/desktop/ms645598(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms645600(v=vs.85).aspx

これらのページには、windows.h のみを含める必要がある (winuser.h は含めない) ことも記載されています。

于 2012-05-29T11:41:14.257 に答える