问题标签 [libgphoto2]

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 回答
763 浏览

linux-kernel - 针对 Linux 内核 2.6.21.3 运行的 gphoto2 中的 PTP 错误

希望有一个 gphoto 或 Linux 内核专家在那里闲逛,我在这里问这个问题。我正在尝试为 Linux libgphoto2 库构建一个自定义前端。目前我正在使用 gphoto2 调用图书馆。我在 Etch (Debian 4.0) VM 映像上运行它作为我的测试机器。我从 gphoto-suite svn 存储库主干中提取源代码并毫无问题地构建它。我刚刚构建了套件的 libgphoto2 和 gphoto2 部分,因为这就是我所需要的。当我尝试连接到我的相机 (Canon EOS Rebel XTi) 时,我收到一个 PTP 错误,然后出现一条消息,上面写着“i/o 库中发生错误('未指定错误')”。我发现了一些与 libgphoto2 相似的错误的参考,这些错误散布在具有多个不同内核的多个 Linux 发行版中。最近的一个似乎是在 2.6.28 中,被 gphoto-suite 团队明确宣布为内核错误。参考这里这里

我之前在 Ubunut 的 Hardy Heron 上已经让这个库与这台相机一起使用,所以我知道它过去一直有效。由于我的目标平台是运行 2.6.21 内核的单板计算机,我将 Etch VM 的内核更新为 2.6.21.3 并得到了同样的错误。

那么我的问题是,有谁知道这是否真的是 USB 驱动程序中的一个内核错误,它已经存在了一段时间并且正在内核 2.6.28.4 及更高版本中得到解决,或者它实际上是否是 gphoto2 版本的问题? 由于我无法轻松地将嵌入式设计升级到新内核,我希望这是一个 gphoto 错误。同时,我将尝试构建一些旧版本的 gphoto。

0 投票
2 回答
1430 浏览

java - 在 JNA 回调函数中处理 va_list 参数

从本机库接收到的 va_list 参数,如何使用 Java 处理它?

我正在使用一个有助于通过回调函数进行日志记录的 C 库。该库是libghoto2,我正在使用 JNA 包装器libgphoto2-java来访问其功能。有关应如何进行日志记录的示例,请参见此 C 文件errordumper中的方法。

我已经设法使用库的gp_log_add_func. 唯一的问题是,回调函数的签名包含一个va_list我不知道如何处理的参数。

正如前面的 C 示例所示,va_list args直接传递到vfprintf. 阅读vfprintf手册会很清楚,它是某种可迭代的数据结构,已经“用va_start宏初始化”并且在迭代之后需要使用va_arg清理va_end。但是我发现防止 JVM 崩溃的唯一方法是使args参数类型为com.sun.jna.Pointerwhile a String[]orObject[]更合适。

如何从此 va_list 中获取数据?

注意为了访问gp_log_add_func,我添加了一些 Java 代码:

org.gphoto2.jna.GPhoto2Native 的补充

创建org.gphoto2.jna.LogFunc

org.gphoto2.jna.LogFunc的实现和使用:

0 投票
1 回答
469 浏览

xcode - 忽略 install_name_tool 将框架设为私有

我使用GPhoto2 框架编写了一个简单的应用程序,只要框架位于最初编译的位置,它就可以工作。不过,我想把它移到应用程序包中,所以它不需要单独安装,所以我需要让它相对于这个主可执行文件工作。

不幸的是,该框架不是 Xcode 项目。它使用脚本构建,所以我不能简单地更改安装目录构建设置,这是我在寻找答案时经常看到的解决方案。作为 Xcode 和 Mac 编程的新手,我也无法知道如何将框架转换为 Xcode 项目。

我遇到的另一个建议是使用 install_name_tool 更新库 ID 和依赖项,将绝对路径替换为“@executable_path/../Frameworks/GPhoto2.framework”形式的路径。该框架不是一个单一的二进制文件,而是包含许多 .dylib 和 .so 库,但所有这些库的更新只成功了一半。

我已将 Xcode 设置为在构建框架时将框架复制到应用程序包中。然后,如果我从最初编译的位置删除框架,则应用程序无法加载,OS X 生成的报告说 libgphoto2 库无法再找到,正如预期的那样。

如果我随后使用 install_name_tool 更新应用程序包内的所有框架库以及应用程序二进制文件本身中的引用,则应用程序将加载但找不到任何连接的相机。使用 otool 我能够验证所有引用都已正确更改。

但是,如果我将框架的副本替换到其原始位置,它就会再次正常工作,识别连接的摄像机,无论该框架使用相对位置还是绝对位置。显然,尽管加载,它仍在查看此位置。我什至尝试依次从框架中的原始位置删除每个单独的库文件,以查看问题是否只是其中依赖的结果,但无论缺少哪个,应用程序都将无法工作。

顺便说一句,如果我使用框架的更新版本构建应用程序,它会失败说找不到库“@executable_path/../Frameworks/GPhoto2.framework/prefix/lib/libgphoto2.2.dylib”

我是在做错什么或错过了一步,还是我试图对在 Xcode 之外创建的框架做不可能的事情?

0 投票
1 回答
1668 浏览

node.js - node.js / gphoto2 - 如何保存文件(jpg)

我正在尝试使用 node.js (0.10.20)、libgphoto2 (2.5.2.) 和 gphoto2 模块为 Raspberry Pi(最新的 raspbian)上的节点构建佳能 eos 7d 的 web gui。

除了将文件保存在 node.js 中之外,一切似乎都运行良好。

我使用以下代码片段:

创建的文件不可读/不是有效的 jpg 图像

使用 libgphoto 的 cli 工具创建一个有效的图像:

所以我假设错误出现在用于保存数据的节点代码中

我如何将节点中的数据正确保存到 .jpg 文件中?

0 投票
4 回答
112 浏览

c - 为什么要定义一个 _struct 然后在没有 _ 的情况下对其进行 typedef?

我正在浏览 libgphoto2 存储库并看到了这个:

为什么有人想要这样做而不是仅仅调用结构PTPObjectHandles并省略整typedef行?

编辑:我可能应该注意到_PTPObjectHandles代码中再也不会使用它了。

0 投票
0 回答
798 浏览

python - 无法将 libgphoto2.dylib 加载到 python 中

我已经正确安装了 gphoto,我可以使用我的相机的所有功能,但出于某种原因

引发错误。

我使用 macports 安装了 libgphoto2,就像我说的 gphoto 工作正常:

所以我不明白为什么 gphoto2 可以使用 libgphoto2 而 ctypes 不能。有什么建议么?我对此很陌生,所以这可能是一个非常基本的愚蠢错误。

0 投票
1 回答
701 浏览

python - Python等待子进程完成

我对 Python 真的很陌生,我对 subprocess 类有点问题。

我正在启动一个外部程序:

我的问题是,在我启动 Python 脚本的 shell 中,我仍然得到输出,GPHOTO2我认为 Python 仍在等待 GPHOTO 完成。

有任何想法吗?

0 投票
1 回答
338 浏览

python - Python PyGObject pixbuf 内存泄漏

我正在从 gphoto2 中检索 JPEG,从数据中创建 Gio 流,然后从流中创建 Pixbuf:

执行此操作的函数使用 . 附加到 Gtk 空闲事件GLib.idle_add(...)。它可以工作,但它会泄漏内存。进程的内存使用不断攀升。即使在构造 pixbuf 的行被注释掉时也会泄漏,但在构造流的行也被注释掉时不会泄漏,因此似乎是流本身正在泄漏。在构建 pixbuf 后添加stream.close()没有帮助。

这里释放内存的正确方法是什么?

0 投票
1 回答
1611 浏览

xcode - 在 mac os x Yosemite 上安装 gphoto2 - ./configure 问题

我正在尝试在我的 macbook pro 上安装 gphoto2。我从他们的网站和终端安装了 tar.gz,并按照 README 文件的建议cd Downloads运行。./configure我不断收到此错误:

我安装了 Xcode 6 以及命令行工具(通过在终端中运行 gcc 对其进行了测试)。我究竟做错了什么?我应该怎么办?

另外,我应该安装 gphoto2 还是 libgphoto2?

0 投票
3 回答
1955 浏览

java - 尝试从 jar 实例化类时出现 java.lang.NoClassDefFoundError

我确实发现了很多关于此错误的信息,但不知何故,建议的解决方案都没有解决问题。

我正在尝试在 Eclipse 中的 Ubuntu 下为 libgphoto2 使用 JNA 绑定(在 Eclipse 上使用 Java 的经验适中,恐怕在 Ubuntu 上没有任何经验)。我想使用的有问题的绑定在这里: http ://angryelectron.com/projects/libgphoto2-jna/

我按照该页面上描述的步骤,制作了一个简单的测试客户端,但由于上述错误而失败。所以我减少了测试客户端,直到我唯一尝试做的就是实例化一个 GPhoto2 对象,这仍然产生了错误。测试客户端如下所示:

我得到的错误占用了更多的空间:

libgphoto2 本身已安装,它从命令行运行,我什至有开发头文件并且能够从 python 调用 GPhoto2 函数,所以问题不能在那里定位。

然而,在 Eclipse 中查看 .class 文件时,它们没有任何定义。所以我认为这可能是问题所在,尤其是在使用 ant 构建整个东西时出现错误(尽管 .jar 已成功导出,但从我可以看出错误仅与文档的生成有关)。所以我将源代码加载到eclipse中并自己构建了.jar。在这种情况下,Eclipse 表示在构建过程中出现了警告(尽管没有错误),但没有向我显示实际的警告。如果有人能告诉我构建日志到底去了哪里,那可能已经有所帮助。我到处搜索它都没有成功,如果我在 Eclipse 中单击“详细信息”,它只会告诉我警告发生在哪里,而不是它们是什么。

尽管如此,警告不一定是毁灭性的,所以我将生成的 Jar 导入到上述客户端中。我检查了 .class 文件,这次它们包含了所有代码。但是我仍然得到完全相同的错误列表(是的,我非常确定旧库已从类路径中删除并添加了新库。我重复了几次该过程,以防万一)。

由于我没有构建 jar 的经验,所以我制作了一个小的 helloworld jar,只是为了看看我是否可以从另一个程序中调用它,或者我是否会遇到类似的错误。它工作顺利。我什至尝试通过使用各种选项将其导出来故意重现该问题,但它仍然有效。我尝试使用在实验期间有效的设置重新导出我实际需要的库,但它们仍然无法运行。我现在几乎被困住了。任何帮助我解决问题的提示将不胜感激。