C++ 更改libmysqlclient和libxml2的链接顺序会导致libxml2出错
我正在linux平台上用C构建一个应用程序。在我的程序中,我使用API xmlReadFile使用libxml2读取XML文档C++ 更改libmysqlclient和libxml2的链接顺序会导致libxml2出错,c++,mysql,c,linux,libxml2,C++,Mysql,C,Linux,Libxml2,我正在linux平台上用C构建一个应用程序。在我的程序中,我使用API xmlReadFile使用libxml2读取XML文档 File.xml:1: parser error : Document is empty ^ File.xml:1: parser error : Start tag expected, '<' not found ^ 我将程序链接到makefile的以下行: $(CC) -m32 -g -o app.out -Wl,-Bstatic $(other_li
File.xml:1: parser error : Document is empty
^
File.xml:1: parser error : Start tag expected, '<' not found
^
我将程序链接到makefile的以下行:
$(CC) -m32 -g -o app.out -Wl,-Bstatic $(other_libs) -lmysqlclient -lxml2 -Wl,-Bdynamic -lpthread -lm -lrt -lz -lbz2 $(extra_ldflags)
通过这些设置,文件中的所有内容都可以正常工作。对xmlReadFile的API调用工作正常
如果将-lmysqlclient移到-lxml2之后,程序将在xmlReadFile中生成以下错误
File.xml:1: parser error : Document is empty
^
File.xml:1: parser error : Start tag expected, '<' not found
^
如何解决上述错误
我提前感谢您的帮助。您确定您的XML文档有效吗?是的。这是有效的。在我更改链接设置之前,程序会完全读取文档。XML文件以ascii字符集编码。我在xmlReadFile API中指定编码。我尝试了其他编码,但我得到了相同的错误。好的,对不起,我帮不了你。我对链接几乎一无所知…:谢谢你看了这篇文章。这对我来说太奇怪了,我猜你的程序调用未定义的行为有缺陷?;它是否有效取决于链接过程的细节。我会尝试在没有mysqlclient库的情况下启动,并通过valgrind等运行生成的libxml2-only程序。