问题标签 [c-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - mysql c api限制函数
我们可以在 C-api 的限制函数中使用变量吗?就像我必须迭代地提取 10 行,所以形式如下:mysql_query(conn,"SELECT abstract FROM pages limit $i $i+10");
python - 使用 C API 运行 Python 代码,中断和恢复
在我的 C 程序中,我正在使用 Python/C-API 运行 Python 脚本。我使用PyRun_SimpleFile
,它读取 Python 脚本并将其执行到最后。
我想在执行某个 Python 命令时“中断”Python 脚本。让我们称之为cwait()
。然后控件应该返回到 C 其中。当 C 程序决定这样做时,它应该在它被中断的地方恢复 Python 脚本的执行。
因此,我希望能够编写一个类似这样的 Python 脚本:
在 C 执行或 Python 执行的意义上,您可以将这种协作式多任务称为。
请注意,C 程序必须是“master”,它读取并执行 Python 脚本。所以从命令行,我输入如下内容:
run_script -p my_script.py
python - 为什么列表有 __reverse__() 特殊方法但元组在 Python 中没有?
Python 中的reversed(seq)
内置表示seq
必须有__reversed__()
方法或支持序列协议。列表和元组显然都支持序列协议,但列表使用了自己的__reversed__()
方法。
那么__reverse__()
列表的优化必须比序列协议为反转提供的更快。因此,我查看了为 listobject.c实现的源代码__reversed__()
,并且由于我对 C 知识的有限性,我无法理解为什么元组 ( tupleobject.c ) 不会有类似的内部反转方法,因为元组在我看来在分配和内存方面进行一些优化 ( PyTuple_MAXSAVESIZE
) 的 bean 数组,以及一个更熟悉的数组列表。
我缺少什么使实现__reversed__()
方法成为列表类型优化的 C 魔法,但标准迭代器协议更适合元组?
z3 - 在 Z3 中:如何制定基于 else 的条件(基于变量的评估)?
我是 Z3 的新手,仍然找不到如何根据不同的可能评估来表达有条件的新任务。在 https://github.com/Z3Prover/z3/blob/master/examples/c/test_capi.c#L1846的 If-then-else 示例中, 我仍然需要将分配设置为 true 或 false,并且当我想要根据对另一个变量的可能评估使其为真或假。我怎样才能做到这一点?
在评估示例中,我希望计算的值用于影响稍后将通过断言检查的仍未评估的值。因此,如果这是我如何将使用新的(基于评估的)条件评估的模型再次返回到上下文的方式?即我想做没有最终评估的复合条件。那可能吗?
lua - 如何检查 Lua 中的两个值是否原始相等?
在 Lua 中重写相等运算符时(通过 " __eq
" 元方法),有没有办法仍然检查原始相等性(即不调用重写__eq
,但检查两个表值是否在引用上相同?)我需要这样做来自 C API,但我在那里找不到合适的函数。
例如:
Wheresome_comparison()
不调用元__eq
方法。
(请注意lua_compare()
不满足这一点,特别是。我想要一个lua_rawcompare()
,如果你愿意的话 - 或者更确切地说是一个能给我等价的技巧或解决方法。这个想法是为了防止__eq
实现中的无限递归......)
perl - SWIG typedef - Perl 数组
我有一个 SWIG 文件来为语言进行许多绑定。C源码中有一个变量,它是一个定长列表,整数类型。当我在 Perl 中访问它时,它没有任何项目 - 只是表明它是一个数组。
Python 中也存在同样的问题,但我可以使用 SWIG 类型图解决该问题:
好的,我想用 Perl 再做一次——但我不是 Perl 专家,所以我可以为 Perl 修复这个类型映射。这是我尝试的:
perl 脚本在运行时向我显示“len: 10”,但数组为空:
结果是:
0''
我错过了什么?
谢谢,
一种。
编辑:这是 Perl 脚本:
现在,这个脚本产生这个结果:
"len: 10" 输出来自 SWIG typedef - 请参阅 "printf("len: %d..." 行...
lua - lua_resume():第二个参数是什么意思?
注意:下面有一些问题可以说明我的想法,但我正在寻找的唯一答案是标题中实际问题的答案。不是在这里要求“一本书”,也不是对所有这些的逐条回应。
我正在尝试从 C API 启动一个协程,让它产生,然后再继续(可能在从其他协程执行恢复之后)。这是一个相当简单的用例,但文档lua_resume()
非常混乱:
int lua_resume (lua_State *L, lua_State *from, int nargs);
在给定的线程 L 中启动和恢复协程。
要启动协程,您将 main 函数和任何参数压入线程堆栈;然后你调用 lua_resume,其中 nargs 是参数的数量。当协程挂起或完成执行时,此调用返回。当它返回时,堆栈包含所有传递给 lua_yield 的值,或所有由 body 函数返回的值。如果协程产生,lua_resume 返回 LUA_YIELD,如果协程完成执行而没有错误,则返回 LUA_OK,或者在错误的情况下返回错误代码(参见 lua_pcall)。
如果出现错误,堆栈不会展开,因此您可以在其上使用调试 API。错误消息位于堆栈顶部。
要恢复协程,您需要从最后一个 lua_yield 中删除所有结果,仅将要作为 yield 的结果传递的值放入其堆栈,然后调用 lua_resume。
参数from代表正在恢复L的协程。如果没有这样的协程,该参数可以为NULL。
“表示正在恢复 L 的协程”的含义在这里非常不清楚。究竟什么时候“来自”nil,哪个L
和哪个from
是“线程堆栈”,以及恢复协程的确切要求是什么?可以在初始状态和实际恢复的第二个状态L
之间修改状态吗?lua_resume()
如果是这样,该州如何知道在哪里/恢复什么功能?如果不是(即每个线程一个线程lua_State
),创建新线程的正确方法是什么,以便它与父线程共享执行上下文(全局、环境等),以及调用lua_resume()
和展开的正确方法是什么?在这种情况下要求每个开始/恢复?'from' 论点是否与这些事情有关?
最后,在任何一种情况下 - 我如何获得完整的堆栈跟踪以在错误处理程序中进行调试(例如在错误时调用lua_pcall
),它尊重/知道跨简历的调用?是否lua_getinfo()
通过简历正确报告?这就是“来自”论点的目的吗?
我真的很想要一个来自 C API 的协程启动/恢复的完整工作示例,该示例说明了第二个参数的使用。gist 上有这个例子,但是它已经有多年历史了,并且 API 从那时起发生了变化——lua_resume()
现在需要 3 个参数,而不是 2 个......
python - Numpy C API 的问题
代码(基于Numpy C-Api 示例给出了 SegFault。他们所关注的教程的链接已失效,我还没有找到好的教程):
在a= PyArray_FromDims(nd, dims, NPY_DOUBLE);
.
我在一个已激活的虚拟环境中。“...”给出了我的虚拟环境的路径,其中 numpy 作为子目录存在,并且已使用 pip install -e numpy 安装。
mysql - MySQL表被标记为crash,如何通过查询获取crash的表
我想通过C API从查询中获取崩溃的表列表。
我知道mysqlcheck --auto-repair --check --all-database
命令和repair table db_name.table_name
cli,但我不知道如何通过查询获取崩溃的表名。
我只想通过查询获取表名,比如
有人知道吗?
c++ - 错误:“->”的基本操作数具有非指针类型“cv::Mat”
我有一个 c-Api opencv 项目,我想更改为 c++ (mat) 看到这个原始代码:
运行这个项目后,看到这个错误
查看使用的每一行的错误 '->' 。请帮我 ...