c++ 在visual studio上使用64位python和pybind11

polhcujo  于 2023-03-25  发布在  Python
关注(0)|答案(1)|浏览(234)

我正在尝试编写c++代码来与我的python应用程序交互,我使用的是64位解释器,一个64位版本的pybind11,我正在将代码编译为64位.pyd。这是我到目前为止的代码:

#include <pybind11-global/pybind11/pybind11.h>
#include <Windows.h>
#include <cmath>

namespace py = pybind11;

const double e = 2.7182818284590452353602874713527;

double sinh_impl(double x) {
    return (1 - pow(e, (-2 * x))) / (2 * pow(e, -x));
}

double cosh_impl(double x) {
    return (1 + pow(e, (-2 * x))) / (2 * pow(e, -x));
}

double tanh_impl(double x) {
    return sinh_impl(x) / cosh_impl(x);
}

PYBIND11_MODULE(gtpec_cluster, m) {
    m.def("fast_tanh2", &tanh_impl, R"pbdoc(
        Compute a hyperbolic tangent of a single argument expressed in radians.
    )pbdoc");

#ifdef VERSION_INFO
    m.attr("__version__") = VERSION_INFO;
#else
    m.attr("__version__") = "dev";
#endif
}

当我构建解决方案时,我可以从Python代码导入它:

>>> from gtpec_cluster import fast_tanh2
>>> fast_tanh2(2)
0.9640275800758167
>>>

但是如果我在Visual Studio中运行,它会给我一个错误,gtpec_cluster.pyd is not a valid Win32 application。有没有一种方法告诉Visual Studio它应该使用64位而不是32位库?这是我使用的Python:

kzipqqlq

kzipqqlq1#

假设你在Visual Studio中,你可以在解决方案资源管理器中右键单击Python项目,然后单击“设置为启动项目”。然后你可以继续开始。

相关问题