无法在 Boost.Python 中使用 __stdcall 编译示例
Posted
技术标签:
【中文标题】无法在 Boost.Python 中使用 __stdcall 编译示例【英文标题】:Can't compile example with __stdcall in Boost.Python 【发布时间】:2016-11-24 07:49:44 【问题描述】:我正在尝试使用 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 多个类似的错误,但前 2 个是:
错误 C2780: 'boost::mpl::vector10::type&,T0,T1,T2,T3,T4,T5,T6,T7> boost::python::detail::get_signature(RT (__thiscall ClassT::* )(T0,T1,T2,T3,T4,T5,T6,T7) const,Target *)': 需要 2 个参数 - 1 假如 C:\boost\boost_1_62_0_python\boost\python\make_function.hpp 104
错误 C2780: 'boost::mpl::vector10::type&,T0,T1,T2,T3,T4,T5,T6,T7> boost::python::detail::get_signature(RT (__thiscall ClassT::* )(T0,T1,T2,T3,T4,T5,T6,T7) volatile const,Target *)': 期望 2 参数 - 提供 1 个 C:\boost\boost_1_62_0_python\boost\python\make_function.hpp 104
如你所见,我使用了 BOOST_PYTHON_ENABLE_STDCALL
的定义,在 this page: 中提到过
但是无论是否定义它,问题都是一样的。
有谁知道我做错了什么?
【问题讨论】:
【参考方案1】:如果您在导入 boost 头文件后定义 BOOST_PYTHON_ENABLE_STDCALL,则会收到该错误。
【讨论】:
以上是关于无法在 Boost.Python 中使用 __stdcall 编译示例的主要内容,如果未能解决你的问题,请参考以下文章
使用boost.python,如何扩展类的__dir__函数?
将 `__str__` 方法添加到 Boost Python C++ 类时的构建问题
使用 boost::python::make_function 设置 __name__ 属性