无法在 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__ 属性

无法在 Visual Studio 2008 中构建 Boost.python。编译出错

Boost.python 和 OMP

Boost python,使用命名空间调用函数对象