delphi – 无法在XE2中编译包含DSUtils的包
我正在尝试编译一个包含DSUtils.pas(
DSPack的一部分)的包,并且它失败,因为它尝试编译错误的DirectShow9.pas单元 – 而不是来自DSPack,而是来自Delphi XE2(Update 3)RTL的单元.
该问题可以用最小的包重复: package Package1; {$R *.res} {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} {$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS ON} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} {$OPTIMIZATION OFF} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO ON} {$SAFEDIVIDE OFF} {$STACKFRAMES ON} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE $400000} {$DEFINE DEBUG} {$ENDIF IMPLICITBUILDING} {$IMPLICITBUILD ON} requires rtl; contains DSUtils in 'x:commonpkgdspacksrcDSPackDSUtils.pas'; end. DSUtils行1058中出现错误,错误是未声明的标识符:FrameRateCode. Result.FrameRateCode := (x and $00000003) shr 00; Undeclared是’FrameRateCode’ – CtrlClick在结果上带给我们WinAPI.DirectShow9(在RTL文件夹中)没有声明此字段. 有趣的部分 – 如果我去DSUtils使用列表,点击DirectShow9,然后按Ctrl Enter,设备的DSpack版本将打开(并且本机已经定义了FrameRateCode字段).所以德尔福知道单位在哪里.它只是尝试使用错误的DirectShow9编译包. 有趣的tidbit:如果我正在编译使用DSUtils的普通应用程序(非包),一切都可以正常运行. 我试过的 将DirectShow9从DSPack编译成自己的软件包(实际上我使用的是包含DirectX9文件夹中所有文件的DSPack的DirectX9软件包),并将其添加到“require”列表中.不行 我看到三种可能的解决方法,但我对这些解决方案并不满意. >我可以评论有问题的代码.幸运的是,只有这一行,其他一切都与Delphi的DirectShow9一起编译. 我真正想看到的是让XE2使用正确的源文件. 解决方法
我面对同样的问题,我只是评论了所有的问题行(有2或3个).一切工作都很好.
另一个选择是使用最新的DSPack(与XE2兼容):http://code.google.com/p/dspack/ 或者您可以重命名DSPack的DirectShow9文件,如下所述:http://www.progdigy.com/forums/viewtopic.php?p=16971 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |