问题标签 [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.
c++ - “operator shared_ptr”方法访问?(自由感)
我目前正在尝试将LibRealsense包装到 Unreal 4 插件中。这个库提供了一些 C API 和一些 C++ API(包装它的 C API),所以我正在做 C++(这对 Unreal 来说很有意义)。
但是有一种我以前从未见过的运算符重载(在rs_pipeline.hpp中):
rs2_pipeline
是管道的 C 类型,它在所有 c++ 类中作为共享指针访问。例如:
因此,当我尝试config.can_resolve
使用我的 C++“管道”对象调用时,我需要获取内部的shared_ptr<rs_pipline>
. 但是我该怎么打电话operator shared_ptr<rs_pipline()
??它到底是一个什么样的算子?
tensorflow - TF_SessionRun 中的内存重新分配
我正在使用带有 C 接口的 TensorFlow。TF_SessionRun 函数的文档指出:“成功时,对应于输出[0,noutputs-1] 的张量被放置在 output_values[] 中。output_values[] 元素的所有权转移给调用者,调用者最终必须在它们上调用 TF_DeleteTensor 。”
我正在大量使用 TF_SessionRun,我想尽量减少内存重新分配的数量。但是这个描述并没有说明内存重新分配的规则。如果输出 TF_Tensor 已经分配了适当的维度,它会被重新分配还是按原样使用?这种行为将来会改变吗?
c++ - 使用 lua coroutine api 和 lua_close 时出现分段错误
我正在开发一个 lua 脚本中断项目,我想使用 std::Stack 和 lua 协程来保存上下文。但是当我将 stacksize 设置为超过 38 时,它会在 lua_resume 和 lua_close 中随机崩溃。测试.lua:
主.cpp:
编译器选项:
我怀疑是我调用lua_newthread时出错了,所以我在调用lua_newstate之前做了一个堆栈检查,它变得正常了。
想知道我是否在这方面犯了错误,我该如何改正?
python-3.x - Python 3 c 扩展模块释放无效指针
我编写了这个C 扩展模块,它使用快速矩阵乘法计算斐波那契数。
问题是当我使用该模块运行以下 Python 3 代码时:
它返回下面列出的错误:
free():无效指针已中止(核心转储)
它似乎是由 C 扩展模块内部的某些东西引起的,但没有显式free
调用。
lotus-domino - 如何从 TYPE_MIME_PART 项目中读取数据?
它有点工作,但问题是 MIME_PART 结构似乎没有初始化?即使我尝试打开不同的 mime 项目,它的所有属性都具有相同的值。
itemText 字符串具有大部分内容,但由于未正确设置 MIME_PART 结构,因此指向文本的指针已关闭...
那么如何正确设置 MIME_PART 呢?
python - numpy C API 中的 import_array 如何工作?
我正在尝试将 c++ 中的 c 样式数组转换为 numpy 数组,并在尝试使用“PyArray_SimpleNewFromData”函数时遇到问题。原来我需要打电话
虽然我不明白如何调用这个函数。每当我尝试调用它时,我都会遇到我无法理解的编译器错误。例如编写以下简单脚本:
产生编译器错误
错误:没有值的返回语句,在返回'int'的函数中 [-fpermissive] import_array();
我看了几个例子,例如:
https://codereview.stackexchange.com/questions/92266/sending-ac-array-to-python-numpy-and-back
编译多个模块时 import_array() 的 Numpy/CAPI 错误
但是无论我尝试什么(即使看似遵循这些示例),我似乎都遇到了上面的编译器错误。我错过了什么或做错了什么?非常欢迎解释如何调用 import_array() 函数。谢谢您的帮助!
更新:
我正在使用 python 2.7.11,我认为它可能与这里讨论的内容有关:
https://github.com/clemenscorny/brisk/issues/3
但我仍然不知道如何解决它。
python - 在 Python 模块中调用 C 头文件函数
我需要将 cfgmgr32 api header(cfgmgr.h) 从 C 转换为 python 模块。这样我就可以从其他 python 脚本调用任何 C 头函数
c-api - 更新 aTable 集合 a,b,c = func(x,y,z,…)
我需要一个快速的建议。我提到以下场景是基于我在 64 位上的 monetdblite 编译中已经可用的 c_api 的使用,目的是将它与一些即席 C 编写的函数一起使用。
简短:如何实现或模拟以下场景: 更新 aTable set a,b,c = func(x,y,z,...)
长。许多算法返回多个变量,例如多元回归。
为了尽量减少monetdb和繁重计算函数之间的数据传输,所有这些结果都是一步生成的。问题是如何立即将它们传回,从而最大限度地减少 monetdb 和外部 C/C++(/R/Python) 函数之间的计算时间和内存流量?
我解决这个问题的第一个想法是这样的:
1.更新aTable set dummy = func_compute(x,y,z,...)
其中 dummy 是一个临时的 __int64 字段,func_compute 将计算所有必要的输出并将结果存储到一个虚拟指针中。为了确保常量估计没有问题,数组中的第一个返回值将是真正的虚拟指针,其余的只是一个递增的 dummy + i 值;
2.更新aTable set a = func_ret(dummy, 1), b= func_ret (dummy, 2), c= func_ret (dummy, 3) [, dummy=func_free(dummy)];
假设 func_ret 将以与第一次调用时返回的顺序相同的顺序获取虚拟对象,我只需将准备好的结果复制到提供的存储中;如果订单没有保留,我将需要一个额外的步骤来获取最小值(真正的虚拟指针),然后使用当前值的偏移量在我的数组中查找。
// 或者 =============================
我将如何释放临时内存不太相关,可以在更新的最后一个语句中,也可以在使用 func_free 的新假更新语句中。问题是在我看来,即使我节省了一些计算(大)时间,假人的传递仍然完成了 3 次(内存实际上没有被复制的任何机会?)。
有没有其他更好的方法来实现这一目标?
c++ - 在 C 中重塑张量
如何使用 Tensorflow 的 C_api 重塑 TF_Tensor*,因为它是在 C++ 中完成的?
我没有看到使用 tensorflow 的 c_api 的类似方法。
swift - Swift 桥接 2D 数组以键入 UnsafePointer?>?
嗨我正在尝试使用 Swift 4 包装一个 C api
Swift 已导入具有以下签名的函数。
public typealias indicator = @convention(c) (Int32, UnsafePointer<UnsafePointer<Double>?>?, UnsafePointer<Double>?, UnsafePointer<UnsafeMutablePointer<Double>?>?) -> Int32
根据 C 库文档,签名如下:
int indicator(int size,
double const *const *inputs,
double const *options,
double *const *outputs);
值得注意的是,函数的int
返回是c风格的函数的错误类型,实际返回在outputs
指针中
那么假设我创建了以下 Swift 类型
let inputs: [[Double]] = []
let options: [Double] = []
var outputs: [[Double]] = []
使用一些适当的值,那么我应该能够执行以下操作:(注意info.pointee.indicator
是导入的函数)
但是编译器抱怨以下错误:
当我传递了不正确的类型(我认为)时,这种方式是有道理的。
那么除了内存管理问题之外,我将如何将[[Double]]
类型转换为例如UnsafePointer<UnsafeMutablePointer<Double>>
指针?
根据此处的文档Calling Functions With Pointer Parameters我应该能够通过隐式桥接来做到这一点,但似乎不是,也许我应该只创建指针类型而不是尝试从 Swift 转换?
在此先感谢,我确定我缺少一些简单的东西。
C API 本身如下:
该indicator
函数通过上面的结构访问。
指标函数的给定实例如下