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 ../..
тогда все было хорошо.