Использование libxml2 в Visual Studio 2008 и Windows XP - PullRequest
1 голос
/ 02 августа 2009

У меня странная проблема при запуске приложения, использующего GNOME libxml2 в Visual Studio 2008 (VS2008-SP1) и Windows XP.

У меня есть два проекта C ++:

  • Проект A (библиотека)
  • Проект B (приложение, которое зависит от Проекта A)

Оба под одним решением VS.

Проект A статически скомпилирован с libxml2.lib. Я добавил зависимости в библиотеку в обоих проектах A и B .

Решение компилируется отлично. Единственное, что при запуске я получаю следующую ошибку под Windows XP:

"Не удалось запустить это приложение, так как libxml2.dll не был найден. Повторная установка приложения может решить эту проблему".

Я пробовал это в двух разных установках Windows XP SP3. И самое странное в том, что он отлично работает в Windows Vista, и я не думаю, что он должен искать DLL, так как он статически скомпилирован. Верно?

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 02 августа 2009

Учитывая, что libxml2 является проектом на основе Gnome, я предполагаю, что он не включается по умолчанию ни при какой установке Windows.

Бьюсь об заклад, причина того, что она работает в Vista, заключается в том, что у вас установлена ​​другая программа, которая включает эту библиотеку. Следовательно, он работает там случайно, а не дизайн.

Я согласен с Ричи. Лучший способ решить эту проблему - вывести DependencyWalker и посмотреть, какая зависимость не работает на XP, но не на Vista. Это приведет вас к вашей проблеме.

3 голосов
/ 02 августа 2009

Если вы проверили очевидное (присутствует ли libxml2.dll на машинах с XP?), Вы можете найти Dependency Walker полезным - он предоставит более подробные ошибки и ведение журнала, чем Windows даст вам владеть.

Возможно, отсутствует сама зависимость от libxml2 - Dependency Walker скажет вам, что это за зависимость.

...