阅读:1653回复:17
加入驱动的版本信息时出错?
我用wdmbuilddriver.bat编译驱动成功,但当在source中加入2bd_drv.rc,想增加版本信息时就出错。
附上错误信息、wdmbuilddriver.bat和2bd_drv.rc,请求指教。 编译时的错误信息: ==================================================================== Build Windows driver ==================================================================== BUILD: Object root set to: ==> objchk BUILD: /i switch ignored BUILD: Compile and Link for i386 BUILD: Compiling d:testuidpci_test directory Compiling - objchki386messages for i386 Compiling - 2bd_drv.rc for i386 rc() : error RC1103 : invalid option, -FR cvtres() : error CVT1101: cannot open objchki3862bd_drv.tmp for reading BUILD: Compile errors: not linking d:testuidpci_test directory BUILD: Done 附上WdmBuildDriver.bat内容 @echo off echo ************************************************************** echo * echo * File : WdmBuildDriver.bat echo * echo * Description: Used to build the WDM device driver echo * echo ************************************************************** echo. SET PLX_CHIP=Pci9050 echo ==================================================================== echo Perform any error checks echo ==================================================================== IF NOT "%PLX_CHIP%" == "" GOTO EnvOk echo ERROR: PLX_CHIP environment variable not defined. Please echo set to one of the following: echo. echo PCI9030 echo PCI9050 echo PCI9080 echo PCI9054 echo IOP480 GOTO Exit :EnvOk IF NOT "%OS%" == "Windows_NT" SET NULL=nul IF NOT "%OS%" == "Windows_NT" SET RD=DelTree /y IF "%OS%" == "Windows_NT" SET RD=Rd /q /s IF "%1" == "c" goto Clean IF "%1" == "C" goto Clean echo ==================================================================== echo Create necessary directories echo ==================================================================== IF NOT EXIST Obj%BUILD_ALT_DIR%%NULL% Md Obj%BUILD_ALT_DIR% IF NOT EXIST Obj%BUILD_ALT_DIR%%Cpu%%NULL% Md Obj%BUILD_ALT_DIR%%Cpu% IF NOT EXIST Driver%NULL% Md Driver IF NOT EXIST i386%NULL% Md i386 echo ==================================================================== echo Build the message file if it doesn't exist echo ==================================================================== Nmake /nologo /c /s /f MakeFile.inc MessageFiles echo. echo ==================================================================== echo Build Windows driver echo ==================================================================== build -Zbwe %1 IF ERRORLEVEL == 1 SET Error=1 echo ==================================================================== echo Build Browser Information echo ==================================================================== IF EXIST *.sbr Copy *.sbr Obj%BUILD_ALT_DIR%%Cpu% >NUL IF EXIST *.sbr Del *.sbr Nmake /nologo /c /s /f MakeFile.inc BrowserFiles IF ERRORLEVEL == 1 SET Error=1 echo ==================================================================== echo Cleanup and check if any errors were encountered echo ==================================================================== IF EXIST Obj%NULL% %RD% Obj >NUL IF "%Error%" == "1" GOTO Cleanup echo ==================================================================== echo Remove log files if error-free build echo ==================================================================== IF EXIST Build%BUILD_ALT_DIR%.* Del Build%BUILD_ALT_DIR%.* echo ==================================================================== echo Copy to floppy & copy symbols, etc. (For PLX internal use only) echo ==================================================================== IF "%PLX_INTERNAL%" == "" Goto Cleanup IF NOT EXIST ObjApi%NULL% MD ObjApi >NUL IF NOT EXIST ObjApi%DDKBUILDENV%%NULL% MD ObjApi%DDKBUILDENV% >NUL Copy Obj%BUILD_ALT_DIR%%Cpu%ApiFunctions.* ObjApi%DDKBUILDENV% >NUL echo. IF NOT "%NO_FLOPPY%" == "" GOTO Cleanup C:WindowsCommandChoice /n /s /c:yYnN " Copy driver to floppy [y,n]? " IF ERRORLEVEL == 3 Goto Cleanup Copy Driver%DDKBUILDENV%%Cpu%*.sys a:Wdm Goto Cleanup :Clean echo ==================================================================== echo Delete build files if cleaning echo ==================================================================== echo Deleting: All build files IF NOT "%PLX_INTERNAL%" == "" %RD% ObjApi IF EXIST Obj%NULL% %RD% Obj IF EXIST Obj%BUILD_ALT_DIR%%NULL% %RD% Obj%BUILD_ALT_DIR% IF EXIST Driver%NULL% %RD% Driver IF EXIST *.sbr Del *.sbr IF EXIST Build%BUILD_ALT_DIR%.* Del Build%BUILD_ALT_DIR%.* echo Deleting: ...finished! :Cleanup rem ==================================================================== rem Remove common files to avoid multiple versions rem ==================================================================== IF EXIST i386%NULL% %RD% i386 >NUL SET RD= SET NULL= SET Error= SET PLX_CHIP= echo CnvrtLf converts file so it's viewable in a text editor IF EXIST Build%BUILD_ALT_DIR%.log CnvrtLf Build%BUILD_ALT_DIR%.log :Exit echo. 我的2bd_drv.rc文件 #include<winver.h> ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,1,0 PRODUCTVERSION 1,0,1,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x0L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "080404b0" BEGIN VALUE "Comments", "" VALUE "CompanyName", "abc Co.,Ltd" VALUE "FileDescription", "2BD_DRV" VALUE "FileVersion", "1, 0, 1, 0" VALUE "InternalName", "2BD_DRV" VALUE "LegalCopyright", "Copyright 2004" VALUE "LegalTrademarks", "" VALUE "OriginalFilename", "2BD_DRV.SYS" VALUE "PrivateBuild", "" VALUE "ProductName", "jiaxun 2BD_DRV" VALUE "ProductVersion", "1, 0, 1, 0" VALUE "SpecialBuild", "" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x804, 1200 END END [编辑 - 9/20/04 by zl_per] |
|
沙发#
发布于:2004-09-20 20:07
你是命令行编译,DDK环境?
|
|
|
板凳#
发布于:2004-09-21 09:08
是的
|
|
地板#
发布于:2004-09-21 13:17
正常你直接在它工程里的*.rc文件里加入即可,
如果自己建个文件, 在source里把文件名加入即可,其他都不用改 |
|
|
地下室#
发布于:2004-09-21 13:23
我是这么做的,可能是wdmbuilddriver.bat的缘故,编译时显示如下错误:
==================================================================== Build Windows driver ==================================================================== BUILD: Object root set to: ==> objchk BUILD: /i switch ignored BUILD: Compile and Link for i386 BUILD: Compiling d:testuidpci_test directory Compiling - objchki386messages for i386 Compiling - 2bd_drv.rc for i386 rc() : error RC1103 : invalid option, -FR cvtres() : error CVT1101: cannot open objchki3862bd_drv.tmp for reading BUILD: Compile errors: not linking d:testuidpci_test directory BUILD: Done 查看wdmbuilddriver.bat,但我看不出问题在哪。 |
|
5楼#
发布于:2004-09-21 16:06
工程原来有没有*.rc文件,
如果不加入你的rc文件也会出错? |
|
|
6楼#
发布于:2004-09-21 18:09
我用的是命令行方式;
rc文件已经创建了; 错误信息、wdmbuilddriver.bat和2bd_drv.rc都在第一篇帖子中, 怀疑是wdmbuilddriver.bat和2bd_drv.rc的匹配问题,请帮我检查一下,小弟是在没招了,谢谢 |
|
7楼#
发布于:2004-09-22 08:47
我用的是命令行方式; wdmbuilddriver.bat这个文件是编译环境自带的吧,一般不会有问题 可能是你的SOURCE或RC中有问题 你的什么系统,那个环境下编译的ddk? |
|
|
8楼#
发布于:2004-09-22 09:54
我用win2000和2000ddk,wdmbuilddriver.bat是编译环境自带的,是不是其中的这部分不支持rc文件
echo ==================================================================== echo Build Windows driver echo ==================================================================== build -Zbwe %1 IF ERRORLEVEL == 1 SET Error=1 但我修改-Zbwe好像还是不管用。郁闷! |
|
9楼#
发布于:2004-09-22 15:12
贴出source文件
|
|
10楼#
发布于:2004-09-22 15:19
source文件: 请求指教!
#*********************************************************** # File: Sources # # Specifies build settings and files to compile #*********************************************************** TARGETNAME = pciwdm TARGETPATH = Driver\$(DDKBUILDENV) TARGETTYPE = DRIVER USE_PDB = 1 INCLUDES = $(BASEDIR)\Inc;..\..\..\..\Inc; \ ..\..\Common; \ ..\..\Common\PlxChip\$(PLX_CHIP); \ ..\..\Common\Wdm C_DEFINES = -DPCI_CODE -DLITTLE_ENDIAN -DPLX_DRIVER \ -DDRIVER -DWDM_DRIVER -FR \ -DPCI9050 !IF "$(DDKBUILDENV)" == "checked" C_DEFINES = $(C_DEFINES) -DPLX_DEBUG !ENDIF #*********************************************************** # Files to build #*********************************************************** SOURCES = \ ApiFunctions.c \ Dispatch.c \ Driver.c \ EepromSupport.c \ GlobalVars.c \ Interrupts.c \ Messages.rc \ PciRegSupport.c \ PlugPlay.c \ PlxChip.c \ init.c \ DEBUGPRINT.C \ Power.c \ SupportFunc.c \ 2bd_drv.rc |
|
11楼#
发布于:2004-09-23 11:36
C_DEFINES = -DPCI_CODE -DLITTLE_ENDIAN -DPLX_DRIVER
-DDRIVER -DWDM_DRIVER -FR -DPCI9050 -FR选项,cl能认识,但RC.exe不认识 如果想产生sbr文件,把-FR加到USER_C_FLAGS Use the USER_C_FLAGS macro to specify flags that should only be sent to the C/C++ compiler. Unlike C_DEFINES, USER_C_FLAGS is not sent to the RC compiler. |
|
12楼#
发布于:2004-09-23 11:56
我尝试在source中去掉-FR,编译通过了,但同时产生下列信息:
Linking Executable - driver\free\i386\2bd_drv.sys for i386 2bd_drv2.res() : warning LNK4059: messages.res already specified; additional resource file ignored BUILD: Done 查看.sys的属性,没有出现版本面板。 是不是要产生sbr文件才出现版本面板? 那如何把-FR加到USER_C_FLAGS 中? 谢谢 |
|
13楼#
发布于:2004-09-23 13:10
不好意思,看漏了,居然还有个rc文件
为什么不直接改messages.rc文件呢? 我没有试过,所以也不会用多个rc文件产生res文件的方法。 |
|
14楼#
发布于:2004-09-23 13:14
messages.rc:
LANGUAGE 0x9,0x1 1 11 Messages.bin 不知道是干什么用的。 |
|
15楼#
发布于:2004-09-23 13:24
试一下:
在source文件去掉msg.rc 在你的rc文件,#include “msg.rc” |
|
16楼#
发布于:2004-09-23 13:43
在source中去掉-FR和messages.rc,居然就行了。不过毕竟这不是最优方案,就先这么着吧!
谢谢各位,让大家费心了 |
|
17楼#
发布于:2004-09-23 14:57
正常你直接在它工程里的*.rc文件里加入即可, |
|
|