问题标签 [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.

0 投票
2 回答
35 浏览

mysql - mysql c api限制函数

我们可以在 C-api 的限制函数中使用变量吗?就像我必须迭代地提取 10 行,所以形式如下:mysql_query(conn,"SELECT abstract FROM pages limit $i $i+10");

0 投票
0 回答
156 浏览

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

0 投票
1 回答
111 浏览

python - 为什么列表有 __reverse__() 特殊方法但元组在 Python 中没有?

Python 中的reversed(seq)内置表示seq必须有__reversed__()方法或支持序列协议。列表和元组显然都支持序列协议,但列表使用了自己的__reversed__()方法。

那么__reverse__()列表的优化必须比序列协议为反转提供的更快。因此,我查看了为 listobject.c实现的源代码__reversed__(),并且由于我对 C 知识的有限性,我无法理解为什么元组 ( tupleobject.c ) 不会有类似的内部反转方法,因为元组在我看来在分配和内存方面进行一些优化 ( PyTuple_MAXSAVESIZE) 的 bean 数组,以及一个更熟悉的数组列表。

我缺少什么使实现__reversed__()方法成为列表类型优化的 C 魔法,但标准迭代器协议更适合元组?

0 投票
1 回答
608 浏览

z3 - 在 Z3 中:如何制定基于 else 的条件(基于变量的评估)?

我是 Z3 的新手,仍然找不到如何根据不同的可能评估来表达有条件的新任务。在 https://github.com/Z3Prover/z3/blob/master/examples/c/test_capi.c#L1846的 If-then-else 示例中, 我仍然需要将分配设置为 true 或 false,并且当我想要根据对另一个变量的可能评估使其为真或假。我怎样才能做到这一点?

评估示例中,我希望计算的值用于影响稍后将通过断言检查的仍未评估的值。因此,如果这是我如何将使用新的(基于评估的)条件评估的模型再次返回到上下文的方式?即我想做没有最终评估的复合条件。那可能吗?

0 投票
1 回答
509 浏览

lua - 如何检查 Lua 中的两个值是否原始相等?

在 Lua 中重写相等运算符时(通过 " __eq" 元方法),有没有办法仍然检查原始相等性(即不调用重写__eq,但检查两个表值是否在引用上相同?)我需要这样做来自 C API,但我在那里找不到合适的函数。

例如:

Wheresome_comparison()不调用元__eq方法。

(请注意lua_compare()不满足这一点,特别是。我想要一个lua_rawcompare(),如果你愿意的话 - 或者更确切地说是一个能给我等价的技巧或解决方法。这个想法是为了防止__eq实现中的无限递归......)

0 投票
1 回答
321 浏览

perl - SWIG typedef - Perl 数组

我有一个 SWIG 文件来为语言进行许多绑定。C源码中有一个变量,它是一个定长列表,整数类型。当我在 Perl 中访问它时,它没有任何项目 - 只是表明它是一个数组。

Python 中也存在同样的问题,但我可以使用 SWIG 类型图解决该问题:

好的,我想用 Perl 再做一次——但我不是 Perl 专家,所以我可以为 Perl 修复这个类型映射。这是我尝试的:

perl 脚本在运行时向我显示“len: 10”,但数组为空:

结果是:

0''

我错过了什么?

谢谢,

一种。

编辑:这是 Perl 脚本:

现在,这个脚本产生这个结果:

"len: 10" 输出来自 SWIG typedef - 请参阅 "printf("len: %d..." 行...

0 投票
1 回答
2255 浏览

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 个......

0 投票
0 回答
772 浏览

python - Numpy C API 的问题

代码(基于Numpy C-Api 示例给出了 SegFault。他们所关注的教程的链接已失效,我还没有找到好的教程):

a= PyArray_FromDims(nd, dims, NPY_DOUBLE);.

我在一个已激活的虚拟环境中。“...”给出了我的虚拟环境的路径,其中 numpy 作为子目录存在,并且已使用 pip install -e numpy 安装。

0 投票
1 回答
1355 浏览

mysql - MySQL表被标记为crash,如何通过查询获取crash的表

我想通过C API从查询中获取崩溃的表列表。

我知道mysqlcheck --auto-repair --check --all-database命令和repair table db_name.table_namecli,但我不知道如何通过查询获取崩溃的表名。

我只想通过查询获取表名,比如

有人知道吗?

0 投票
1 回答
583 浏览

c++ - 错误:“->”的基本操作数具有非指针类型“cv::Mat”

我有一个 c-Api opencv 项目,我想更改为 c++ (mat) 看到这个原始代码:

运行这个项目后,看到这个错误

查看使用的每一行的错误 '->' 。请帮我 ...