我用boost::python在VS2010中构建了一个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);
}
到目前为止,一切都很好。然后我得到我的dll.dll以及我的dll.libc:\myDLL\Debug中的文件。在
据boost医生说(http://wiki.python.org/moin/boost.python/SimpleExample),我需要将此添加到PYTHONPATH,因此我将c:\myDLL\Debug添加到它: Python: C: \Python27;C:\myDLL\Debug
然后,从我的.py文件中,我尝试导入它:
^{pr2}$我也尝试过从myDLL import获取_started1,从getting_started1 import*,以及所有可能的组合。在
有人能告诉我怎么给我的模块打电话吗?谢谢
编辑: 根据cgohlke的说法,当我在VS中编译时,PYTHONPATH的某个地方应该有一个getting-unstarted1.pyd?此文件不存在。。。我需要在VS2010中设置一些不同的东西吗?我有一个默认的win32 DLL项目。 但是boost文档说“如果我们构建这个共享库并把它放到PYTHONPATH上”,windows上的共享库不是DLL吗?因此,DLL应该在PYTHONPATH中?在
构建Python扩展的标准、可移植的方法是通过distutils。但是,VisualStudio2010不是Python2.7支持的编译器。以下内容设置.py适合我使用Visual Studio 2008和boost_1_48_0。构建命令是
python setup.py build_ext inplace
。对于VisualStudio2010项目,请尝试将链接器输出文件更改为
getting_started1.pyd
,而不是myDLL.dll
。相关问题 更多 >
编程相关推荐