ctypes错误:libdc1394错误:无法初始化libdc1394

fre*_*ley 67 c++ python ctypes shared-libraries libdc1394

我正在尝试将我的程序编译成一个共享库,我可以使用ctypes在Python代码中使用它.

使用以下命令编译库:

g++ -shared -Wl,-soname,mylib -O3 -o mylib.so -fPIC [files] `pkg-config --libs --cflags opencv`
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用ctypes导入它时

from ctypes import *
mylib = CDLL("/path/to/mylib.so")
print mylib.test() // Expected output: Hello World
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

libdc1394 error: Failed to initialize libdc1394
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

Vad*_*Vad 181

非常令人沮丧的是,没有人真正展示出具体的解 我在安装OpenCV后遇到了这个问题.对我来说,删除此警告的最简单方法实际上是禁用此驱动程序:

sudo ln /dev/null /dev/raw1394
Run Code Online (Sandbox Code Playgroud)

  • 禁用驱动程序是删除错误的方法似乎不对... (7认同)
  • 这个解决方案在debian上似乎并不是永久性的.重启后链接消失了.如何永久? (2认同)
  • 我想要使​​它永久化它应该足以将`ln/dev/null/dev/raw1394`添加到`/ etc/rc.local`(就在退出0`行之前) (2认同)

luk*_*k32 30

libdc1394是一个控制相机硬件的库.我认为它是你链接的opencv.也许内核驱动程序没有加载?我想有很多原因导致它失败.

也许一些OpenCV专家可以更好地回答.但我打赌问题出在OpenCV lib端.

对于相同的错误消息一些初始搜索产生了具有同样的理由[结果1,2 ].因此,如果您/dev/raw1394在文件系统上找不到,请尝试这些.

更新:

这似乎只是一个警告.模块raw1394似乎已被弃用,并且一些libdc1394版本可能正在寻找它,而它随着更新而消失.搜索它会提供许多结果和错误报告.但似乎软件运行良好.所以如果你真的不需要它,你可以忽略它.[ 3,4 ]

  • 我在没有安装USB控制器的虚拟机(来自Bitnami的VMWare Fusion Ubuntu 14.04 Django Stack)下运行时看到了这个问题.将USB控制器添加到VM后,此错误消失了. (4认同)

Iva*_*del 8

好的.我花了整整一天时间.

基本上,之间的联系/dev/raw1394/dev/null是不是永久性的.你可以打电话到你的虚拟机,ln /dev/null /dev/raw1394但是它会持续到你重新启动你的容器.

我必须做的,似乎是最简单但不完美的方法是在Container启动期间放置链接.

我认为将它作为一项服务运行,但对于一项简单的工作似乎太过分了.

我最终开始工作的方式(它不漂亮,但有效),是通过改变CMDDockerfile:

CMD sh -c 'ln -s /dev/null /dev/raw1394'; <your-script-here>


小智 6

我有一个类似的问题,在VirtualBox下运行Ubuntu精确.首先我按照以下说明安装了OpenCV:https: //help.ubuntu.com/community/OpenCV这解决了我尝试过其他方法的几个问题,但是libdc1394的问题仍然存在.

libdc1394 error: Failed to initialize libdc1394
Run Code Online (Sandbox Code Playgroud)

我终于看到了戈兰前一个答案的评论

所以我在virtualbox中启用了USB控制器......等等!一切都很完美!

谢谢goran!

  • 这应该是一个评论,而不是一个额外的答案. (3认同)