Crystal Reports VCL for Borland可以找到CRPE32.dll但没有支持dll

问题描述 投票:0回答:2

我想把一个旧的Delphi应用程序(内置在Borland Delphi 6中)带到Crystal报告的第13版。在使用SAP发布的自助指南中列出的步骤之前,它已被提升到10.2版:http://scn.sap.com/docs/DOC-11048

我再次提交了相同的更改,从10.2注册表项指向13个注册表项并更新VCL中的版本检查。 VCL组件现在从正确的位置成功提取CRPE32.dll,但后来无法找到相关的Dll文件,如pvlocal-1-0.dll和local_fallback-4-0.dll。如果我将所有Dll移动到与找到它们的应用程序相同的文件夹,但我不知道是否要将所有16个dll和许可证文件与应用程序一起打包。

我已经通过以下方法将问题缩小到LoadLibrary调用。遗憾的是,我无法找到有关如何解决问题的任何信息,并希望社区可能知道解决问题的方法:

     function TCrpeEngine.PELoadCrpeDll(const CrpeLocation: string) : Bool;
var
  s1,s2 : string;
begin
  Result := False;
  s1 := Trim(CrpeLocation);
  CRDEngine := LoadLibrary(PChar(s1));
  {If an error occured, set the flag}
  if (CRDEngine < HINSTANCE_ERROR) then
  begin
    CRDEngine := 0;
    s2 := SysErrorMessage(GetLastError);
    if Trim(s2) = '' then
      s1 := CRD_ERROR_LOADING + Chr(10) + 'Windows Error Number: ' + IntToStr(GetLastError)
    else
      s1 := CRD_ERROR_LOADING + Chr(10) +
        'Windows Error Number: ' + IntToStr(GetLastError) + ' - ' + Trim(s2);
    CRDEngineError(s1);
  end
  else
    Result := True;
end;
delphi crystal-reports vcl
2个回答
2
投票

问题是CRPE32.dll已加载但它不知道其他DLL的位置,因为它们不在搜索路径中。

你有几个选择。

  1. 您可以使用存储DLL的路径调用SetDLLDirectory
  2. 将文件所在的目录添加到系统路径。
  3. 将文件添加到搜索路径中已有的目录中。
  4. 将文件添加到工作目录。

-1
投票

你不能使用CR版本13> Delphi。 CR V13是.NET

我现在使用CR V13和Delphi XE2。您需要使用C#或Delphi Prism编写.NET包装器并从Delphi调用它。

© www.soinside.com 2019 - 2024. All rights reserved.