2008年11月7日 星期五

如何籍由MinGW編譯可以正確存取libusb-win32的程式?

先前在Linux上有了libusb的Library,讓Linux的使用者在發展需要存取USB裝置的應用程式時,免除了撰寫Kernel Device Driver的困擾;同樣地,在Windows上也有個libusb-win32的專案,可以至http://libusb-win32.sourceforge.net/取得,在依照其說明的安裝流程安裝後,您即可以透過libusb-win32這個Library來存取USB Device。

只是如小弟我是個Linux的愛好者,還是想擺脫Windows的牽絆,於是找到了MinGW這個專案,這是一個cross-compiler的專案,使用者可以用它在Linux平台上編譯出Windows程式,此時小弟進一步妄想:「如果可以在Linux平台上寫個程式,並且不用寫Windows Driver,那該有多好?」

為此,我抄習並略為修改libusb的測試程式,欲籍由MinGW進行編譯,結果.........找不到Device?
而libusb-win32所附的測試程式卻可以正常work?在百思不解之際,經由Jserv的協助,發現需有以下參數,方足以成功產出可以透過libusb-win32存取USB Device的程式,特此將其記錄於此....

i686-mingw32-gcc -O2 -Wall -mno-cygwin -o DLSPD.exe -I./src  DLSPD_test.c -s -mno-cygwin -L. -lusb -lgdi32 -luser32 -lcfgmgr32 -lsetupapi -lcomctl32