pybind11“Python是64位,选择编译器是32位”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pybind11“Python是64位,选择编译器是32位”相关的知识,希望对你有一定的参考价值。

我正在尝试在安装了VisualStudio 2015的Windows机器上编译pybind11。我还安装了python 3.5.3 64bit,以及cmake 2.8.12。我收到错误:

CMake Error at tools/FindPythonLibsNew.cmake:122 (message):
  Python config failure: Python is 64-bit, chosen compiler is 32-bit
Call Stack (most recent call first):
  tools/pybind11Tools.cmake:16 (find_package)
  CMakeLists.txt:28 (include)

我没有“选择”编译器为32位,并且查看CMakeLists.txt,我没有找到任何指定运行哪个编译器的地方。那么如何告诉pybind11 / cmake为64位编译?

答案

您应该像这样指定64位VS编译器:

cmake "/path/to/src/" -G"Visual Studio 14 2015 Win64"

否则,它默认选择32位。

另一答案

如果您使用Ninja生成器并且出现此错误,请确保在64位模式下运行VS Dev命令提示符:

VsDevCmd.bat arch=amd64 && cmake <options> ... 

以上是关于pybind11“Python是64位,选择编译器是32位”的主要内容,如果未能解决你的问题,请参考以下文章

嵌套 dict 和 pybind11

from _dlib_pybind11 import * ModuleNotFoundError: No module named '_dlib_pybind11'

如何将浮点数传递给期望 int 的 pybind11 函数

返回多个 py::array 而不在 pybind11 中复制

使用 Pybind11 包装 STL 容器返回类型

如何通过pybind11在python中捕获C++的异常?