无法在Boost.Python

时间:2016-11-24 07:49:44

标签: c++ boost-python msvc12

我尝试使用Boost.Python在Python中包装函数,并在使用__stdcall时遇到问题。这是一个例子:

#define BOOST_PYTHON_STATIC_LIB
#define BOOST_PYTHON_ENABLE_STDCALL
#include <boost/python.hpp>
#include <boost/python/signature.hpp>

void __stdcall f(void) 
{
    return;
}

using namespace boost::python;

BOOST_PYTHON_MODULE(MyPyDLL)
{
    def("func", f);
}

当我尝试编译时,我得到了100多个类似的错误,但前两个是:

  

错误C2780:   &#39;升压:: MPL :: vector10 ::类型&安培;,T0,T1,T2,T3,T4,T5,T6,T7&GT;   boost :: python :: detail :: get_signature(RT(__ thiscall ClassT :: *   )(T0,T1,T2,T3,T4,T5,T6,T7)const,Target *)&#39;:需要2个参数 - 1   提供   C:\ boost \ boost_1_62_0_python \ boost \ python \ make_function.hpp 104

     

错误C2780:   &#39;升压:: MPL :: vector10 ::类型&安培;,T0,T1,T2,T3,T4,T5,T6,T7&GT;   boost :: python :: detail :: get_signature(RT(__ thiscall ClassT :: *   )(T0,T1,T2,T3,T4,T5,T6,T7)volatile const,Target *)&#39;:预计2   参数 - 提供1   C:\ boost \ boost_1_62_0_python \ boost \ python \ make_function.hpp 104

如您所见,我使用了this page:中提到的定义BOOST_PYTHON_ENABLE_STDCALL

但无论是否定义问题都会保持不变。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:-1)

如果在导入boost头文件后定义BOOST_PYTHON_ENABLE_STDCALL,则会出现该错误。