2013-02-17 2 views
2

В Visual C++ 8 я пытаюсь создать последнюю версию OpenCV. Я использую цель BUILD_ALL, которая пытается создать как отладочную, так и выпускную версии всего. Я сталкиваюсь с ошибкой ссылки, когда пытается связать приложение opencv_python. Ошибка заключается в том, что компоновщик не может найти библиотеку Python27_d.lib, которая ожидалась бы, поскольку у меня нет этой библиотеки, а только в библиотеке выпусков. Я не понимаю, что это библиотека выпуска (без _d), которая требуется в конфигурации проекта, и это то, что передается в итоговой командной строке.Соглашение об именовании библиотеки Visual C++ Visual

VS добавляет _d по умолчанию, если версия отладки строится. Есть ли способ выборочно отключить его для данной справочной библиотеки? BTW, выпуск версии приложения строит отлично.

+1

Я считаю, что вам нужно построить отладочную версию Python и создайте Python27_d.lib самостоятельно. Он связан с VC++ с использованием двух разных библиотек времени исполнения в зависимости от того, как компилируется код (Debug или Release). – martineau

ответ

3

Проблема на самом деле в Python.h (и, в частности, pyconfig.h), который определяет фактический Python Lib имя

[Я считаю] вам не нужно использовать библиотеку Python отладки, прогрев человек уже имел дело с этой проблемой

см Python debugging builds от pyconfig.h:

/* For an MSVC DLL, we can nominate the .lib files used by extensions */ 
#ifdef MS_COREDLL 
# ifndef Py_BUILD_CORE /* not building the core - must be an ext */ 
#  if defined(_MSC_VER) 
      /* So MSVC users need not specify the .lib file in 
      their Makefile (other compilers are generally 
      taken care of by distutils.) */ 
#   ifdef _DEBUG 
#    pragma comment(lib,"python27_d.lib") 
#   else 
#    pragma comment(lib,"python27.lib") 
#   endif /* _DEBUG */ 
#  endif /* _MSC_VER */ 
# endif /* Py_BUILD_CORE */ 
#endif /* MS_COREDLL */ 

в импульсе у них есть обертка наддув/Python/подробно/wrap_python.hpp для Python.h, который обрабатывает все окна конкретными сту ff (и, в частности, вы можете создать debug dll с выпуском Python ... возможно, вы можете просто попробовать использовать это вместо (или пройти через код;)

Смежные вопросы