2

Visual C++ 8 で、最新の OpenCV リリースをビルドしようとしています。すべてのデバッグ バージョンとリリース バージョンの両方をビルドしようとする BUILD_ALL ターゲットを使用しています。opencv_python アプリケーションをリンクしようとすると、リンク エラーが発生します。エラーは、リンカーが Python27_d.lib ライブラリを見つけられないことです。これは、そのライブラリがなく、リリース ライブラリしかないためです。私が理解していないのは、プロジェクト構成で必要なのはリリース ライブラリ (_d なし) であり、結果のコマンド ラインで渡されるものであるということです。

デバッグ バージョンがビルドされている場合、VS はデフォルトで _d を追加しますか。特定の参照ライブラリに対して選択的にオフにする方法はありますか? ところで、アプリのリリース バージョンは正常にビルドされます。

4

1 に答える 1

4

問題は実際には、実際の Python ライブラリ名を指定する Python.h (特に pyconfig.h) にあります。

[私は信じています] Python デバッグ ライブラリを使用する必要はありません。この問題は既に後押しされています。

pyconfig.h からのPython デバッグ ビルドを参照してください。

/* 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.h 用のラッパー boost/python/detail/wrap_python.hpp があります (特に、リリース Python でデバッグ dll をビルドできます....代わりに(またはコードを調べます;)

于 2013-06-13T11:57:36.107 に答える