boost.python «Ошибка загрузки DLL» в WinXP, VisualStudio 2005 - PullRequest
3 голосов
/ 27 июня 2011

У меня проблемы с импортом модуля boost-python на WinXP-32. Я использую Python 2.6.6, предварительно скомпилированные библиотеки boost.python 1.41 от boostpro и VC ++ 8 (VisualStudio 2005).

После компиляции приведенного ниже фрагмента кода я попытался импортировать полученный pyHELLO.pyd из командной строки python и всегда получал:

"ImportError: сбой загрузки DLL: это приложение не запустилось потому что конфигурация приложения это неверно. Переустановка Приложение может решить эту проблему. "

Я переустанавливал python и пробовал другие буст-версии. Но ничего из этого не помогло.

У меня есть соответствующие DLL расширения в каталоге, куда я пытался импортировать модуль.

Тот же код работает с VC ++ 9 под Win7.

Вот код:

int sayHello() {
    cout << "Hello  !" << endl; 
}


BOOST_PYTHON_MODULE(pyBoostTest)
{
    def("sayHello", sayHello);
}

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

1 Ответ

0 голосов
/ 08 июля 2011

Решено:

На моей машине отсутствовала правильная версия dll MSVC80CRT, от которой зависит dll boost.python. Я скачал соответствующий редист-пакет из MS и установил его. Теперь это работает.

Зависимость не показала отсутствующую зависимость для этой dll. Прочитав про манифесты и SxS я узнал, что указана правильная версия dll в манифесте, который сам встроен в заголовок dll.

Если вы откроете dll в Visual Studio, вы можете прочитать информацию. Затем вы проверите, если Версия dll присутствует в папке c: \ windows \ winsxs. Если нет, вы можете восстановить недостающие DLL, загрузив соответствующий пакет "redist" от MS. Просто найдите версию dll.

Спасибо Дэвиду за подсказку о манифестах.

...