学习 Boost.Python 时遇到了一个困难

pesoft 2006-10-05 04:21:30
下面这段程序核心来自Boost.Python 但是在编译的时候出现了很多问题!
望高人能给解释一下!

#pragma warning( push )
// 没有以下两句话,会产生一些 warning 虽然文件可以正常生成,但不知为何!!
#pragma warning(disable : 4244)
#pragma warning(disable : 4267)

#include <iostream>
#include <boost/python/def.hpp>
#include <boost/python/module.hpp>
#include <boost/python/args.hpp>

# ifdef _DEBUG
# pragma comment(lib, "boost_python-vc71-mt-gd-1_33_1")
# else
# pragma comment(lib, "boost_python-vc71-mt-1_33_1")
# endif

using namespace boost::python;

char const* foo(int x, int y)
{
std::cout << x << ',' << y << std::endl;
return "foo";
}

BOOST_PYTHON_MODULE(testdef)
{
// 示例中下面这句话,如果把注释中的内容也作为代码,编译将不会通过,何故?
def("foo", foo/*, args("x", "y"), "foo's docstring"*/);
}

#pragma warning( pop )
...全文
364 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahccom 2007-01-12
  • 打赏
  • 举报
回复
def的第三个参数用return_value_policy试试
yeyuboy 2006-10-06
  • 打赏
  • 举报
回复
#pragma warning( push )和#pragma warning( pop )之间将使用特定的编译设置,中间的代码
#pragma warning(disable : 4244)
#pragma warning(disable : 4267)
表示:
忽略#pragma warning( push )至#pragma warning( pop )之间出现的4244和4267号警告。
pesoft 2006-10-06
  • 打赏
  • 举报
回复
这就是错误信息了:
f:\boost\include\boost-1_33_1\boost\python\converter\builtin_converters.hpp(118): warning C4267: “参数” : 从“size_t”转换到“boost::mpl::identity<T>::type”,可能丢失数据
with
[
T=int
]
iambic 2006-10-05
  • 打赏
  • 举报
回复
不懂。好像现在好多C++和Python混合的问题啊。def的声明是什么样子的?

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧