这可能是非常错误的错误,但任何人都可以尝试重现我的步骤&检查错误?
我正在使用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首先在当前目录中寻找库,所以应该没问题。
如何让它发挥作用?提前谢谢!
答案 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 ../..
然后一切都很顺利。