Delphi XE2/2007和LibXML

3

两台分别运行WinXP的机器上有不同版本/日期(从2010到2012)的LibXML2.dll

我正在安装来自SourceForge的libxml2.pas(版本2.7.3),我创建了三个应用程序:在XE2上创建了一个控制台和一个VCL表单,以及在D2007上创建了一个VCL表单。

如果我不引用Libxml2.dll中的函数,则我的应用程序可以运行。但如果引用了一个函数,例如Doc:=xxmlParseFile(xnldocptr),则应用程序将在InitUnits中崩溃。

program Project25;

uses
  Forms,

      Unit26 in 'Unit26.pas' {Form26};

    {$R *.res}


begin<---------- Access violation here
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm26, Form26);
  Application.Run;
end.

AV信息

//主要公司 使用 Libxml2;

{$R *.dfm} 

procedure TForm26.FormCreate(Sender: TObject); var Doc: xmlDocPtr; 
begin 
 Doc:=xmlParseFile('c:\a.xml'); 
 xmlFreeDoc(Doc); 
end

我看到LibXML2模块已经被加载。

我是做错了什么还是漏掉了什么?


使用Libxml2;{$R *.dfm}procedure TForm26.FormCreate(Sender: TObject); var Doc: xmlDocPtr; begin Doc:=xmlParseFile('c:\a.xml'); xmlFreeDoc(Doc); end; - Ephraim
1
你应该意识到,如果a.xml不符合格式要求,Doc可能为空。你能否编辑你的问题并添加你收到的确切错误信息? - whosrdaddy
你错过了一个重点,应用程序从未到达这段代码。 - Ephraim
1个回答

7
LIBXML2.DLL本身依赖于其他两个DLL:ICONV.DLLZLIB1.DLL
您可以在此处下载这些dll的最新版本。
请确保这些DLL与您的Delphi可执行文件存储在相同的路径下。
我已经在W7/Delphi XE下测试了您的项目,没有收到AV。

进展不错,但还没完成。Dependency Walker显示MSVCR90.dll文件丢失。XE2机器正在工作中。谢谢。 - Ephraim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接