0

ドライバーのインストールにDiInstallDevice 関数 ( MSDN ) を使用しています。ただし、x64 バージョンは問題ありませんが、x86 でソリューションをビルドするとリンカー エラーが発生します。エラーは LNK2019 です。リンクされた関数は x86 バージョンの newdev.lib で見つかりませんでした。x86 および x64 バージョンのリンカー出力は次のとおりです。

x86:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\newdev.lib の検索:
_UpdateDriverForPlugAndPlayDevicesW@20が見つかりました KernelDriverInstaller.obj
で参照されている newdev.lib
(newdev.dll)が読み込まれています __IMPORT_DESCRIPTOR_newdev が
見つかりまし
た newdev.lib(newdev. dll)
newdev.lib(newdev.dll ) をロード newdev_NULL_THUNK_DATA を
発見 newdev.lib (newdev.dll)
で参照 newdev.lib(newdev.dll) を
ロード

x64:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64\newdev.lib の検索:
KernelDriverInstaller.obj
で参照されている DiInstallDevice が見つかりました
newdev.lib(newdev.dll)が読み込ま
れました UpdateDriverForPlugAndPlayDevicesW
が KernelDriverInstaller.obj で参照されました
Loaded newdev. lib(newdev.dll)
が見つかりました __IMPORT_DESCRIPTOR_newdev
newdev.lib(newdev.dll) で
参照されました newdev.lib(newdev.dll) で参照されました newdev.lib
(newdev.dll)
が見つかりました newdev_NULL_THUNK_DATA newdev.lib( newdev.dll
) で参照されました
newdev.lib(newdev.dll)

ご覧のとおり、リンカーは x86 ライブラリの関数参照を見つけることができませんでした。誰かがこの問題とそれを解決する方法について何か知っていますか? Win7 x64 + VS2008 SP1 を使用しています。

ありがとうございました

4

1 に答える 1

0

問題が解決しました。DiInstallDevice 宣言を別ヘッダーに移動し、WINAPI 宣言を追加しました。したがって、正しい宣言は次のようになります。

BOOL WINAPI DiInstallDevice(
                     __in_opt   HWND hwndParent,
                     __in       HDEVINFO DeviceInfoSet,
                     __in       PSP_DEVINFO_DATA DeviceInfoData,
                     __in_opt   PSP_DRVINFO_DATA DriverInfoData,
                     __in       DWORD Flags,
                     __out_opt  PBOOL NeedReboot
                     );

編集:宣言が正しい7.1ではなく、6.0A SDKの実際。

于 2012-07-04T14:17:30.583 に答える