

Visual Studio上でCにPythonを埋め込もうとしているのですが、'`python36_d.lib'
を開くことができません`というエラーがビルド時に発生します。

下記のページを参考にReleaseビルドに設定してみたのですが、直りません。  
なぜでしょうか?

[Using Python 3.3 in C++ 'python33_d.lib' not found - Stack
Overflow](https://stackoverflow.com/questions/17028576/using-python-3-3-in-c-
python33-d-lib-not-found)

環境 windows 10 home, Visual Studio 2017 Community, Python3.6

構成: Release  
プラットフォーム: x64

* * *

プロジェクトのプロパティ

追加の依存ファイル

[code]

    python36.lib
    %(AdditionalDependencies)
    
[/code]

インクルードディレクトリ

[code]

    C:\Program Files\Python36\include;$(IncludePath)
    
[/code]

追加のライブラリディレクトリ

[code]

    C:\Program Files\Python36\libs;%(AdditionalLibraryDirectories)
    
[/code]


CC BY-SA 4.0
2018-05-06T15:23:09.757
43826
2018-12-20T14:02:45.527
5246
question
python windows c python3 visual-studio
Visual Studio でのPythonの埋め込みでpython36_d.lib' を開くことができませんというエラーが出る


> Releaseビルドに設定してみた

とは **どこを** Releaseに設定したのでしょうか？  
Visual
Studioは個々のプロジェクトとプロジェクトを束ねるソリューションとが存在します。ビルドメニューにある[構成マネージャー](https://docs.microsoft.com/ja-
jp/visualstudio/ide/how-to-create-and-edit-configurations)でこれらを確認することができます。

構成マネージャー上部のアクティブソリューション構成で`Release`を選択するわけですが、この段階ではソリューションが構成されただけの状態です。構成マネージャ下部のリストで、アクティブソリューション構成に対応するプロジェクト構成も選択する必要があります。  
つまり、ソリューション構成が`Release`に設定されていても対応するプロジェクト構成が`Debug`となっていた場合、結局のところ`Debug`でビルドされてしまいます。

> 追加の依存ファイル
[code]

>     python36.lib
>     %(AdditionalDependencies)
>  
[/code]

なお、[pyconfig.h](https://github.com/python/cpython/blob/3.6/PC/pyconfig.h#L285-L301)には

[code]

    #           if defined(_DEBUG)
    #               pragma comment(lib,"python36_d.lib")
    #           elif defined(Py_LIMITED_API)
    #               pragma comment(lib,"python3.lib")
    #           else
    #               pragma comment(lib,"python36.lib")
    #           endif /* _DEBUG */
    
[/code]

と記載されているため、「追加の依存ファイル」を設定する必要はありません。  
またこのコードからもわかる通り、たとえプロジェクト構成を`Release`に設定していてもプリプロセッサマクロ`_DEBUG`を定義している場合には依然として`python36_d.lib`が要求されてしまいます。


CC BY-SA 4.0
2018-05-06T21:34:52.683
43828
2018-05-06T21:34:52.683
4236
43826
answer