Apache не запускается, когда библиотека Xerces используется в модуле C++
Я написал модуль C++ для вызова библиотеки Xerces C++ XML для анализа XML-файла. Я не могу запустить httpd.exe с этими изменениями. Вот подробности -
a) версия сервера Apache: httpd-2.4.4-win64 b) версия Xerces: xerces-c-3.1.1-x86_64-windows-vc-10.0 c) среда разработки: Visual Studio 2010 с пакетом обновления 1 (SP1)
Ниже приведены настройки, которые я сделал в Visual Studio, чтобы модуль C++ ссылался на библиотеку Xerces: 1. Дополнительные каталоги включения = E:\xerces-c-3.1.1-x86_64-windows-vc-10.0\xerces-c-3.1.1-x86_64-окна-VC-10,0 \ включают
Дополнительные зависимости = xerces-c_3.lib и xerces-c_static_3.lib
Дополнительные каталоги библиотек = E:\xerces-c-3.1.1-x86_64-windows-vc-10.0\xerces-c-3.1.1-x86_64-windows-vc-10.0\lib
Отладка -> Среда: PATH=E:\xerces-c-3.1.1-x86_64-windows-vc-10.0\xerces-c-3.1.1-x86_64-windows-vc-10.0\bin
В переменных среды операционной системы добавили путь E: \ xerces-c-3.1.1-x86_64-windows-vc-10.0 \ xerces-c-3.1.1-x86_64-windows-vc-10.0 \ bin к переменной среды ДОРОЖКА
Код в моем модуле C++ для вызова подпрограммы библиотеки Xerces выглядит следующим образом:
try { XMLPlatformUtils::Initialize(); // Инициализация инфраструктуры Xerces} catch( XMLException& e) { char* message = XMLString::transcode( e.getMessage()); XMLString::release( &message); } XMLPlatformUtils::Terminate();
В файл httpd.conf добавлено следующее: LoadModule filter_module modules/XercesDLL.dll AddOutputFilterByType TagFilter text/html text/ обычный текст /css
Если я пытаюсь запустить httpd.exe из командной строки, я вижу следующую ошибку -
httpd.exe httpd.exe: синтаксическая ошибка в строке 172 файла E:/httpd-2.4.4-win64/Apache24/conf/httpd.conf: невозможно загрузить модули / XercesDLL.dll на сервер: указанный модуль не найден,
Даже если я закомментирую приведенный выше код C++ на шаге 6, Apache все равно не запустится. Это означает, что Apache не может загрузить версию библиотеки Xerces, которую я использую, независимо от того, как я вызываю библиотеку.
Однако, если я напишу автономную DLL, которая вызывает вышеупомянутую версию библиотеки Xerces, и вызову эту DLL из EXE, то я успешно смогу проанализировать XML. Это означает, что по какой-то причине библиотека Xerces не может быть загружена только сервером Apache.
Я думаю, что это как-то связано со связью между C и C++, но не уверен.
Любая помощь высоко ценится.
Благодарю.