ModuleNotFoundError python包装器,带有c++;
我试图重现关于如何为python包装C/C++文件的内容 这是成功构建的cpp文件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
#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()