ni.com is currently undergoing scheduled maintenance.
Some services may be unavailable at this time. Please contact us for help or try again later.
04-10-2026 08:12 PM
谢谢 rolfk,这真的很有帮助——彻底解开了很多疑惑。
你说得对,我和克劳德在错误的道路上耗费了太长时间。我们浪费了大量时间去追查“两个库实例”、SDK 版本不匹配、ABI 不兼容等等问题。结果发现真正的问题要根本得多: LabVIEW IMAQ 引用句柄和图像指针根本不是一回事 。
如果其他人也遇到类似情况,以下是我们发现问题的简要总结:
最初我将 Image 参数设置为“适应类型,按值处理”——这会传递一些内部 LabVIEW 包装结构,而不是实际的 Image* 指针。
每次 NI Vision 调用(imaqThreshold、imaqGetImageType、imaqGetImageSize 等)均失败,错误代码为 -1074396120(“不是图像”)。
经过一系列测试(全局变量检查以确认单个 .so 实例、内存诊断、dlopen 比较),我发现将参数更改为“数值、无符号指针大小的整数、传递值”后,一切都正常了——imaqGetImageType 返回 0 (U8),imaqThreshold 返回 1,并且图像被正确二值化。
但根据你的解释,我现在明白了,这种“有效”的方法可能并未得到官方支持或任何文档记录。将 IMAQ 引用句柄作为指针大小的整数传递恰好有效,这很可能只是一个实现细节,未来版本可能会失效。
04-10-2026 08:28 PM
Here is the exact solution to my problem:
change
to
There's a code I'm sending out as well for those who need it