doc2x linux r649 zlibwapi.dll не найден

Возможно, это очень грубая ошибка, но может ли кто-нибудь попытаться воспроизвести мои шаги и проверить ошибки?

Я использую Linux Mint 15. Я скачал doc2x (двоичный->openxml msword converter) отсюда: 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

Я думаю, что проблема заключается в первой строке "23.02.2014 21:00:25 [D] System.DllNotFoundException: zlibwapi.dll". zlibwapi.dll находится в каталоге конвертера. Я попытался скопировать его в несколько мест (обычно используемых библиотеками), но не повезло. Я читал, что Mono ищет библиотеки в текущем каталоге, поэтому проблем не должно быть.

Как заставить это работать? Заранее спасибо!

2 ответа

Я столкнулся с похожей проблемой сборки и запуска 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

(Как только вы исправите несколько имен файлов с учетом регистра, то есть!)

Ответ @woodcoder работал для меня, за исключением того, что сборка minizip не смогла найти zlib, который я только что собрал. Мне нужно было изменить source/AdditionalTools/zlib123/contrib/minizip/Makefile изменить линию

CFLAGS=-Wall

в

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

тогда все было хорошо.

Другие вопросы по тегам