问题标签 [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 回答
1263 浏览

static-libraries - 有没有办法用 Cargo 创建 C 库?

我需要创建一个绑定到现有 crate 的(静态)C 库。Cargo 有什么方法可以为我创建这个 C 库吗?

我有一个板条箱(例如 html5ever),我希望 Cargo 为该板条箱创建一个基于 C-API 的 C 库。

0 投票
4 回答
36855 浏览

python - 将 C++ 数组发送到 Python 并返回(使用 Numpy 扩展 C++)

我打算将一个c++数组发送到一个 python 函数,numpy array然后取回另一个numpy array。在查阅了numpy文档和其他一些线程并调整了代码之后,代码终于可以正常工作了,但我想知道这段代码是否写得最优化,考虑到:

  • c++和之间不必要的数组复制numpy (python)
  • 正确取消引用变量。
  • 简单直接的方法。

C++ 代码:

在 CodeReview 中,有一个绝妙的答案:Link...

0 投票
0 回答
1310 浏览

python - PyArray_SimpleNewFromData 中的分段错误

我希望使用 C-API 将数组从 C++ 传递到 Python。通过查看这里的各种主题,我知道我应该使用 PyArray_SimpleNewFromData 方法。当我试图在一个非常小的数组上实现时,我的代码中出现了我无法检测到的分段错误。谁能帮我解决这个问题?

C++ 代码:

}

蟒蛇代码:

详细输出:

0 投票
1 回答
254 浏览

visual-c++ - 在 C++/CLI 中使用 C 回调

我有的

我在我的 C++/CLI 应用程序中使用Vimba C API 。众所周知,它可以正常工作,因为我的伙伴已经完成并且没有错误地运行。

我已经完成了所有的导入/包含。我正在使用 API 没有错误,除了一个。

手册说

在 API 手册中,有一些关于如何使用相机捕获图像的示例。准确地说,捕获完成时运行的回调函数是:

错误

我以完全相同的方式使用它(甚至更多,它来自手册,但它与我的工作伙伴相同,我复制了他已知有效的代码)(我的行):

但是,当我构建应用程序时,我得到:

其中说需要一个参数列表来调用该函数。使用 &... 创建指向成员的指针

但这对我来说没有任何意义,因为回调需要一个指向函数的指针,所以它只需要方法的名称,而不是参数(另外,我的伙伴也是这样做的,正如手册所说)。

对此有任何想法或指导吗?

先感谢您

PS:我不确定标签是否最合适,如果您认为它会更好,请编辑,谢谢。

0 投票
1 回答
216 浏览

excel - Excel C API 等效于 C# 中的 Interop Range.Value

试图弄清楚如何读取引用的内容并获得相同的结果和 Interop/COM 的 Range.Value...即返回的 object[,] 包含字符串、DateTime 和双精度数。

我正在使用 ExcelDNA(和底层 XlCall.Excel 来调用 C API)和两者......

ExcelReference.GetValue()XlCall.Excel( XlCall.xlfDeref, reference )

两者都返回一个object[,]等效于 Interop/COM 的 Range.Value2 ...即返回的 object[,] 仅包含字符串和双精度值。

问题在于 Dates 以 double 形式返回,我无法确定该值应该是 adouble还是 a DateTime

0 投票
1 回答
701 浏览

c - Lua C API:设置错误源信息

我正在实现一个简单的 LUA 在线解释器,它从纯文本(即 C 字符串)中获取多个 LUA 脚本并运行它们。一切正常,但现在我正在测试我的程序在这些脚本发生语法或运行时错误时的响应。

到目前为止,当发生错误时,调用后lua_pcall我从堆栈消息中得到如下错误:

现在,我想要的是 LUA 的运行时用[string "..."]虚拟文件名替换令牌(请记住,解释器从字符串中获取 LUA 代码),这样如果用户使用名称“my.lua”提交虚拟脚本,则会出现错误消息从 LUA 的运行时为该脚本引发的将被格式化为:

我试图分析 LUA 的源代码,以了解 LUA 解释器如何成功实现此目的。到目前为止,我所发现的只是lua_loadstring()后者lua_loadfile()将带有“@”前缀的文件名推入堆栈。来自 LUA 的源代码 ( lauxlib.c):

两个函数,luaL_loadfilex()最后luaL_loadstring()都调用lua_load(),所以两者的区别在于前者在调用lua_load(). 我的代码只是调用luaL_loadstring(),所以我认为在调用它之前推送虚拟文件名会产生相同的效果,但事实并非如此。

我错过了什么吗?谢谢你。

0 投票
0 回答
83 浏览

swift2 - Swift 2 中带有 MusicSequenceBarBeatTimeToBeats 的 EXEC_BAD_INSTRUCTION (code=1, address=0xe)

我在 Swift 2 中使用 Apples MusicSequence C API 时遇到问题。我不知道如何在调用MusicSequenceBarBeatTimeToBeats.

我尝试了很多在互联网上找到的不同解决方案,但似乎没有任何效果。

我的第一次没有导致编译错误的尝试是:

结果是: MusicSequenceBarBeatTimeToBeats 代码行中的 EXEC_BAD_INSTRUCTION (code=1, address=0xe)

然后我尝试了这个,但结果相同:

我已经尝试过该withUnsafeutablePointer功能,但运行时错误相同:

如果我在第三个参数中传递 nil 它不会崩溃,但这没用,因为缺少输出。所以问题似乎是UnsafeMutablePointer<MusicTimeStamp>输出参数。

有什么建议么?

0 投票
1 回答
106 浏览

z3 - Z3 c 代码适用于某些循环计数,而不适用于其他循环计数

我编写了一个 Z3 程序(从 test_capi.c 开始),它在某个数字“参数”上循环,并为每个循环周期添加约束,这些约束取决于前一个循环的约束。这个想法是每个周期选择 2 项 a,d,这将是相同的旧 a,d 或新 a,d 由pointer_a、pointer_d 从有序列表 u_a、u_d 中选择。

该代码适用于某些循环计数,而不适用于其他循环计数(给出 sat 与分段错误)。更奇怪的是,代码工作的循环计数在更改代码时会发生变化。所以下面的代码有效并且是 SAT (我已经选择了 n_ABCD=check3 ),但它只给出了从 2 到 10 的“参数”的结果,除了 6 和参数 = 8、16、32 并且可能是一些其他数字,但我至少尝试过;它不适用于 31、33、64、128 和 512。当我将循环分成 2 个循环时,一个用于 pointer_a[] 和 pointer_d[] 约束,另一个用于 check_v 操作,代码适用于“参数”最多 9,然后是 12、14、17 和 27,我对其他更大的数字并不幸运。目标是将其运行到 parameter=1024 甚至更多。

关于为什么代码只能针对某些数字而不针对其他数字运行的任何解释?它与选择被评估的任意术语的工作方式有关吗?(make_var_feasible、update_and_pivot ......如下面的 gdb 跟踪)

尝试使用 gdb 运行失败的实例,它会给出以下消息:

0 投票
2 回答
291 浏览

mysql - 如何在没有 mysql_free_result(res) 的情况下在 c 中运行查询

我收到Commands out of sync; you can't run this command now错误

0 投票
0 回答
316 浏览

c - 为嵌入式处理器优化 Lua?

我将 Lua 嵌入到具有 16Mhz 32 位 ARM7TDMI 处理器和 256Kb RAM(是的,这是 GBA)的无 eabi 设备的程序中。目前它工作完美(感谢 StackOveflow 用户回答我的问题),完成简单的任务,但我可以做哪些优化来提高整体效率?以下是我的一些想法:

  • 目前我将我的 Lua 代码存储为常量字符数组(有高达 32Mb 的单独 ROM,因此有助于释放 RAM)。当我想运行它时,我只需将此字符串推送到 Lua 堆栈并“pcall”它。但据我所知,Lua 将该代码构建为 RAM 中的字节码。我认为大 Lua 文件也可能存在一些问题。有什么方法可以预编译该字节码并将其保存到常量容器中吗?

  • 哪个 asm 命令集更适合运行 Lua - THUMB 或 ARM?

编辑:也许,将原版 Lua 更改为 LuaJIT?据我所知,LuaJIT 有许多汇编代码行(这使得它的可移植性降低),有机会成功构建旧的 ARM7 处理器吗?