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 \ включают

  1. Дополнительные зависимости = xerces-c_3.lib и xerces-c_static_3.lib

  2. Дополнительные каталоги библиотек = E:\xerces-c-3.1.1-x86_64-windows-vc-10.0\xerces-c-3.1.1-x86_64-windows-vc-10.0\lib

  3. Отладка -> Среда: 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

  4. В переменных среды операционной системы добавили путь E: \ xerces-c-3.1.1-x86_64-windows-vc-10.0 \ xerces-c-3.1.1-x86_64-windows-vc-10.0 \ bin к переменной среды ДОРОЖКА

  5. Код в моем модуле C++ для вызова подпрограммы библиотеки Xerces выглядит следующим образом:

    try { XMLPlatformUtils::Initialize(); // Инициализация инфраструктуры Xerces} catch( XMLException& e) { char* message = XMLString::transcode( e.getMessage()); XMLString::release( &message); } XMLPlatformUtils::Terminate();

  6. В файл httpd.conf добавлено следующее: LoadModule filter_module modules/XercesDLL.dll AddOutputFilterByType TagFilter text/html text/ обычный текст /css

  7. Если я пытаюсь запустить 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++, но не уверен.

Любая помощь высоко ценится.

Благодарю.

0 ответов

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