0

可能这是一个非常愚蠢的错误,但是任何人都可以尝试重现我的步骤并检查错误吗?

我正在使用 Linux Mint 15。我已经从这里下载了 doc2x (binary->openxml msword 转换器):https ://sourceforge.net/project/downloading.php?group_id=216787&filename=doc2x_r649.tar.gz&a=13775724

用 tar -xzf doc2x_r649.tar.gz 解压它

存档包含二进制文件,应该与 Mono 兼容。

我已经安装了单声道 v2.0 和单声道 v4.0 配置文件。

任何进行转换的尝试都会引发错误:

2/23/2014 9:00:25 PM [D] System.DllNotFoundException: zlibwapi.dll
at (wrapper managed-to-native) DIaLOGIKa.b2xtranslator.ZipUtils.ZipLib:zipOpen     (string,int)
at DIaLOGIKa.b2xtranslator.ZipUtils.ZlibZipWriter..ctor (System.String path) [0x00000]   in <filename unknown>:0 
at (wrapper remoting-invoke-with-check) DIaLOGIKa.b2xtranslator.ZipUtils.ZlibZipWriter:.ctor (string)
at DIaLOGIKa.b2xtranslator.ZipUtils.ZipFactory.CreateArchive (System.String path) [0x00000] in <filename unknown>:0 
at DIaLOGIKa.b2xtranslator.OpenXmlLib.OpenXmlWriter.Open (System.String fileName) [0x00000] in <filename unknown>:0 
at DIaLOGIKa.b2xtranslator.OpenXmlLib.OpenXmlPackage.Close () [0x00000] in <filename unknown>:0 
at DIaLOGIKa.b2xtranslator.OpenXmlLib.OpenXmlPackage.Dispose () [0x00000] in <filename unknown>:0 
at DIaLOGIKa.b2xtranslator.WordprocessingMLMapping.Converter.Convert(DIaLOGIKa.b2xtranslator.DocFileFormat.WordDocument doc,    DIaLOGIKa.b2xtranslator.OpenXmlLib.WordprocessingML.WordprocessingDocument docx) [0x00000] in <filename unknown>:0 
at DIaLOGIKa.b2xtranslator.doc2x.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0

我认为问题出在第一行“ 2/23/2014 9:00:25 PM [D] System.DllNotFoundException: zlibwapi.dll ”。zlibwapi.dll位于转换器的目录中。我试过将它复制到几个位置(通常由图书馆使用)但没有运气。我读过Mono首先在当前目录中寻找库,所以应该没有问题。

如何让它工作?提前致谢!

4

2 回答 2

1

我在 64 位 Ubuntu 上使用单声道构建和运行OdfConverter时遇到了类似的问题。

问题似乎是链接器不再自动包含对共享库的引用,如果它认为它不需要它们。如果您ldd libzlibwapi.so可能会发现没有参考libz.so.1定义deflateInit2_符号的位置。

在我的情况下,我能够从源代码分发中重建 libzlibwapi.so,但我添加了一个-Wl,--no-as-needed链接器指令来强制添加以下依赖项libz.so


就我而言,我odf-converter/source/AdditionalTools/zlib123/contrib/minizip/Makefile从以下位置编辑:

    $(CC) -lz -shared -fPIC $(DEBUG) $(CFLAGS) \
        -o libzlibwapi.$(DLLEXT) $(SOURCE)

读书:

    $(CC) -Wl,--no-as-needed -lz -shared -fPIC $(DEBUG) $(CFLAGS) \
        -o libzlibwapi.$(DLLEXT) $(SOURCE)

然后,我能够构建一个 64 位的工作libzlibwapi.so方式,如下所示:

cd odf-converter/source/AdditionalTools/zlib123
dos2unix configure
chmod 755 ./configure
./configure --shared
make test
cd contrib/minizip
make
cp libzlibwapi.so ../../../../../lib

然后可以使用 Mono 来编译和运行 OdfConverter:

cd odf-converter/source/Shell/OdfConverter
xbuild /p:Configuration=Release

(一旦你修复了一些区分大小写的文件名!)

于 2015-10-15T08:22:33.533 回答
0

@woodcoder 的答案对我有用,只是 minizip 的构建找不到我刚刚构建的 zlib。我需要修改source/AdditionalTools/zlib123/contrib/minizip/Makefile以更改行

CFLAGS=-Wall

CFLAGS=-Wall -I ../.. -L ../..

然后一切都很好。

于 2016-07-28T11:51:30.357 回答