linux - 找不到 doc2x linux r649 zlibwapi.dll

标签 linux mono dllnotfoundexception

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

我正在使用 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/

相关文章:

linux - 在特定时间运行命令

c# - Gtk# 中是否有文件夹浏览器小部件?

C# 和 Ubuntu - 如何获取主屏幕的大小?

c# - CLR如何处理访问对象字段的数组索引

macos - Mac 上的 Mono : DllNotFoundException despite SQLite. Interop.dll 在 dllmap 中

linux - SUSE linux 中的 Tomcat 8 安装

python - 使用 Python 执行多个 adb shell 命令

linux - 无法通过使用 Maven 和 Linux 的分布式 JMeter 设置将参数传递给从站