我在 VS2010 中使用 boost::python 构建了一个 DLL,以将一些函数导出到 python 模块:
我的DLL.cpp:
std::string greet() { return "hello, world"; }
int square(int number) { return number * number; }
BOOST_PYTHON_MODULE(getting_started1)
{
// Add regular functions to the module.
def("greet", greet);
def("square", square);
}
到这里为止,一切都编译得很好。然后我在 c:\myDLL\Debug 中获取 myDLL.dll 和 myDLL.lib 文件。
根据 boost doc (http://wiki.python.org/moin/boost.python/SimpleExample),我需要将它添加到 PYTHONPATH,所以我添加了 c:\myDLL\Debug 到它:PYTHONPATH: C:\Python27 ;c:\myDLL\Debug;
然后,从我的 .py 文件中,我尝试导入它:
import getting_started1
print getting_started1.greet()
number = 11
print number, '*', number, '=', getting_started1.square(number)
我还尝试了 from myDLL import getting_started1 和 from getting_started1 import *,以及所有可能的组合。
谁能告诉我我应该如何调用我的模块?谢谢
编辑:根据 cgohlke 的说法,当我在 VS 中编译时,我的 PYTHONPATH 中应该有一个 getting_started1.pyd 吗?这个文件不存在......我必须在VS2010中设置一些不同的东西吗?我有一个默认的 win32 DLL 项目。但是 boost 文档说“如果我们构建这个共享库并将其放在我们的 PYTHONPATH 上”,Windows 上的共享库不是 DLL 吗?因此,DLL 应该在 PYTHONPATH 中?