可能这是一个非常愚蠢的错误,但任何人都可以尝试重现我的步骤并检查错误吗?
我正在使用 Linux Mint 15。 我从这里下载了 doc2x(二进制->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 兼容。
我已经安装了 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 首先在当前目录中寻找库,所以应该没有问题。
如何让它发挥作用?提前致谢!
最佳答案
我在构建和运行时遇到了类似的问题 OdfConverter在 64 位 Ubuntu 上使用单声道。
问题似乎是链接器不再自动包含对共享库的引用,如果它认为不需要的话。如果您 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
(一旦你修复了一些区分大小写的文件名!)
关于linux - 找不到 doc2x linux r649 zlibwapi.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21974102/