Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ModuleNotFoundError python包装器,带有c++;_Python_C++_Visual C++_Boost Python_Python C Api - Fatal编程技术网

ModuleNotFoundError python包装器,带有c++;

ModuleNotFoundError python包装器,带有c++;,python,c++,visual-c++,boost-python,python-c-api,Python,C++,Visual C++,Boost Python,Python C Api,我试图重现关于如何为python包装C/C++文件的内容 这是成功构建的cpp文件 #include "boost/python.hpp" class SaySomething { public: void set(std::string msg) { this->msg = msg; } std::string greet() { return msg; } std::string msg; }; B

我试图重现关于如何为python包装C/C++文件的内容

这是成功构建的cpp文件

#include "boost/python.hpp"
class SaySomething
{
public:
    void set(std::string msg)
    {
        this->msg = msg;
    }
    std::string greet()
    {
        return msg;
    }
    std::string msg;
};
BOOST_PYTHON_MODULE(SaySomething)
{
    namespace python = boost::python;
    python::class_<SaySomething>("SaySomething")
        .def("greet", &SaySomething::greet)
        .def("set", &SaySomething::set)
    ;
}
当我尝试运行python文件时,会发生此错误

ModuleNotFoundError:没有名为“SaySomething”的模块

我尝试将编译后的库移动到同一文件夹,但没有成功。本教程没有详细说明如何让解释器看到C++文件。 编辑 正如一些人所建议的那样,我已经将已编译共享库的扩展编辑为.pyd,以便python可以看到它。这会产生第二个错误

ImportError:DLL加载失败:找不到指定的模块


这和我的一模一样。解决方案建议将Boost.python添加到环境变量中。我知道如何添加路径,但我不确定我想要什么路径,boost.python DLL(或lib)?仅仅是提高

这回答了你的问题吗?您需要将DLL的扩展名更改为
pyd
。只需简单重命名即可。您如何构建它?你是在关注还是在做一些不同的事情?@Hawoona好吧,考虑到这很可能是一个构建问题,我建议你在问题中编辑你如何构建它的确切细节,以便其他人可以复制你所做的
import SaySomething


msg = SaySomething.SaySomething()
msg.set('howdy')
msg.greet()