2012-07-16 107 views
-1

我們正在開發一個DLL,它從WinDDK中調用通用的WinUsb函數。該DLL需要在Windows的32位和64位版本中工作,包括xp,vista,win7和win8。爲幾個Windows版本(xp,win7,vista)開發驅動程序

我的問題是,我們如何通過定位所有這些平臺來管理Visual Studio 2010解決方案? WINDDK庫是爲每個操作系統不同,所以如果我引用庫從代碼:

#### #pragma comment (lib , "C:\\WinDDK\\7600.16385.1\\lib\\wlh\\i386\\winmm.lib") 

,或者從project options->includes section引用庫,這個項目才成爲正確的特定目標架構。 (在這個例子中,Vista 32位,因爲我包括'wlh')。

我們是否應該爲每個不同的操作系統目標創建不同的項目?

+0

你正在冒很大的麻煩,你不用ddk創建DLL,你不使用VS.用Walter Oney的一本書教育自己。 – 2012-07-16 09:06:36

+0

@Hans:也許我的問題是誤導。我正在使用VS創建一個調用泛型WinUsb函數的DLL。爲了調用WinUsb函數,我從DDK引用適當的winusb.lib函數。 – SomethingBetter 2012-07-16 09:38:33

+0

@SomethingBetter:漢斯是對的。您正在嘗試調用用於驅動程序的函數,並且您正嘗試使用不適用於驅動程序的開發平臺來執行此操作。你可能會也可能不會逃避這一點,但這兩種方式都會遇到很多麻煩。 – 2012-07-18 14:36:42

回答

0

WDK/DDK版本不限制您爲其構建的操作系統版本。您可以將目標OS作爲構建環境/編譯參數傳遞。

0

我想你應該通過DDK構建DLL,並在你的VS項目中使用它。

你可以爲你的VS項目編寫預生成事件來運行一個批處理文件,該文件將構建DLL並將其放置在項目的一些衆所周知的地方。另外,您可能需要爲每個要爲其構建的平臺創建不同的項目配置(對於32位和64位至少不同),並運行適當的DLL生成命令。