gpt4 book ai didi

python - Boost Python Hello World 示例在 Python 中不起作用

转载 作者:太空狗 更新时间:2023-10-29 21:32:20 24 4
gpt4 key购买 nike

我在 Python 中使用来自 Visual C++(由 boost 包装)的 C++ 代码时遇到了很多麻烦。

好的,我使用的工具是:Visual Studio 2010、BoostPro 1_47、Windows 7 和 Python 2.7(32 位)。

我有以下代码,可以在 Visual Studio 2010 中很好地编译:

#define BOOST_PYTHON_STATIC_LIB
#include <boost/python.hpp>
using namespace boost::python;

struct World
{
void set(std::string msg) { this->msg = msg; }
std::string greet() { return msg; }
std::string msg;
};


BOOST_PYTHON_MODULE(hello)
{
class_<World>("World")
.def("greet", &World::greet)
.def("set", &World::set);
}

格式为:Win32 Console Application >>>Empty Project/DLL。

在“项目属性”中:

VC++ DIRECTORIES: 
I added:
>>> INCLUDE DIRECTORIES: C:\Program Files\boost\boost_1_47;C:\Python27\include .
>>> LIBRARY DIRECTORIES: C:\Program Files\boost\boost_1_47\lib;C:\Python27\libs

所有这些都构建了 c++ 文件,但我无法从 Python 访问它。

这是当我尝试使用该模块时 Python 所说的:

">>> import hello
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import hello
ImportError: No module named hello

所以我想我的问题是......我怎样才能让 Python 找到它???

当 C++ 代码编译时,它会创建一个 DLL 文件。我必须更改文件的位置吗?如果是这样,我应该把它放在哪里?

非常感谢您的帮助

最佳答案

据我所知,您必须将 DLL 的扩展名更改为 .pyd 否则 Python 将无法加载它。我想你可以设置一个构建选项来自动设置 VS 中的扩展,但我不确定。

此外,确保创建的扩展位于 PYTHONPATH 上的某处,路径,python 将寻找要加载的模块。

关于python - Boost Python Hello World 示例在 Python 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11036319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com