Delphi   发布时间:2022-04-10  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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:\common\pkg\dspack\src\DSPack\DSUtils.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”列表中.不行@H_801_19@>将DirectShow9文件(从DSPack)添加到系统路径的开头并重新启动.不行@H_801_19@>将带有DirectShow9文件的文件夹添加到库路径的开头.不行@H_801_19@>将DirectShow9单元添加到具有显式路径的包中.不行@H_801_19@>将DirectX9 * .pas复制到DSPack文件夹中,使DirectShow9设备与DSUtils设备位于同一个文件夹中.不行

我看到三种可能的解决方法,但我对这些解决方案并不满意.

>我可以评论有问题的代码.幸运的是,只有这一行,其他一切都与Delphi的DirectShow9一起编译.@H_801_19@>我可以从DSPack重命名DirectShow9,但是我可能必须在不同的应用程序中修复’uses’部分.@H_801_19@>我可以使用’Winapi’关闭自动前缀.但这将导致我大量额外的工作,编辑成千上万个文件.

我真正想看到的是让XE2使用正确的源文件.

解决方法

我面对同样的问题,我只是评论了所有的问题行(有2或3个).一切工作都很好.

另一个选择是使用最新的DSPack(与XE2兼容):http://code.google.com/p/dspack/

或者您可以重命名DSPack的DirectShow9文件,如下所述:http://www.progdigy.com/forums/viewtopic.php?p=16971

大佬总结

以上是大佬教程为你收集整理的delphi – 无法在XE2中编译包含DSUtils的包全部内容,希望文章能够帮你解决delphi – 无法在XE2中编译包含DSUtils的包所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。