找不到doc2x linux r649 zlibwapi.dll

时间:2014-02-23 20:30:00

标签: linux mono dllnotfoundexception

这可能是非常错误的错误,但任何人都可以尝试重现我的步骤&检查错误?

我正在使用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&已安装mono 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首先在当前目录中寻找库,所以应该没问题。

如何让它发挥作用?提前谢谢!

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,在64位Ubuntu上使用mono构建并运行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

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

答案 1 :(得分:0)

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

CFLAGS=-Wall

CFLAGS=-Wall -I ../.. -L ../..
然后一切都很顺利。