我在 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 控制台应用程序 >>> 空项目/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 文件。我必须更改文件的位置吗?如果是这样,我应该把它放在哪里?
您的帮助将不胜感激