我使用DiInstallDevice函數(MSDN)進行驅動程序安裝。但是,在x86下構建解決方案時,出現鏈接器錯誤,而x64版本正常。錯誤是LNK2019,鏈接無法在x86版本的newdev.lib中找到函數。下面是一個連接器輸出用於x86和x64版本:DiInstallDevice x86的鏈接器錯誤
86:
搜索C:\ Program Files文件\微軟的SDK \的Windows \ V7.1 \ LIB \ newdev.lib:
找到_UpdateDriverForPlugAndPlayDevicesW @ 20
引用在KernelDriverInstaller.obj
加載newdev.lib(newdev.dll)
實測值__IMPORT_DESCRIPTOR_newdev
引用在newdev.lib(newdev.dll)
加載newdev.li B(newdev.dll)
實測值newdev_NULL_THUNK_DATA
在newdev.lib(newdev.dll)參考
加載newdev.lib(newdev.dll)
64:
搜索C: \ Program Files文件\微軟的SDK \的Windows \ V7.1 \ LIB \ 64 \ newdev.lib:
找到DiInstallDevice
引用在KernelDriverInstaller.obj
加載newdev.l IB(newdev.dll)
實測值UpdateDriverForPlugAndPlayDevicesW
引用在KernelDriverInstaller.obj
加載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。
謝謝
不要寫你自己的winapi聲明,而是'#include'。並正確設置_WIN32_WINNT宏值,Vista和以上需要。 –
6.0A SDK包含錯誤的聲明(7.1是正確的),所以它是唯一的方法。這個信息可能對某人有幫助。 – Barbarian
嗯,我沒有看到它。發佈一個顯示你使用7的問題。1並不完全有助於澄清任何事情。 –