swig包装变量的基本赋值失败。
2009-6-2 20:8:19
收藏:0
阅读:357
评论:2
我使用swig创建了一个包装了大量C++类的lua模块。这些包装器生成和编译时(使用-Wall)没有任何问题。然而,在我找到的几个地方,我遇到了以下问题:成员数据的基本赋值失败。
如果我运行:
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require('myModule')
> a = myModule.ClassA()
然后我可以验证附加到“a”的元表包含了它的所有成员数据(在这种情况下是ClassB和ClassC两个类类型字段“b”和“c”)
我进一步执行:
> a.b = myModule.ClassB()
这将b成功重新分配给ClassB()的一个新实例。但是,当我要执行:
> a.b.c = myModule.ClassC()
我会收到以下错误消息:
错误在ClassB_c_set(arg 2)中,期望'ClassC *',得到'ClassB *'
就好像“=”号右边的表达式是与包含要重新分配的数据字段的元素类型相同的对象一样。我肯定必须漏掉了一些简单的东西,但我已经撞了几个小时的墙了,没有任何结果。
有人有任何想法吗?谢谢!
原文链接 https://stackoverflow.com/questions/941626
点赞
stackoverflow用户768115
始终要非常小心使用 SWIG 进行分配!
请注意,operator=() 函数仅用于本机类型。每当您分配自己的对象时,只有地址被复制。
阅读更多关于此帖子的内容:SWIG C++ 转 Python:警告(362):operator= 被忽略
2012-02-29 09:31:26
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
原来这是 SWIG 的一个 bug。我已经提交了 一个 bug 报告,解释了问题的原因。
实际上,这个问题是由嵌套命名空间问题和我对 SWIG 工作方式的误解导致的。我原以为在接口文件中通过 %include 引入的每个条目都会像 gcc 处理 #includes 一样被处理。然而,在 SWIG 中,文件必须按它们所包含的内容被引用的顺序
%included
。请参见链接的 bug 报告以获得更清晰的解释。