【问题标题】:FFI in PLT Racket with openCVPLT Racket 中的 FFI 与 openCV
【发布时间】:2011-02-22 21:52:13
【问题描述】:

我想通过 PLT Racket 控制我的网络摄像头,理想情况下为一些 OpenCV 的 C api 制作一个轻量级包装库。不过,我遇到了一些麻烦,因为我不确定 OpenCV 中的哪些目标文件是库……很尴尬,我知道。我查看了 Python API 是如何工作的,我看到 cv.so 文件中有模块,但我不确定在我的二进制文件中使用什么。我在 Mac OSX 上

我有这个

(get-ffi-obj function-name (ffi-lib lib-name) format)...)

但我不确定将哪个文件作为“lib-name”传递。 在我的 opencv 安装目录中,我有 ../opencv/2.2/lib ,其中包含许多 .dylib 文件。似乎没有一个有效,但它们是迄今为止最好的猜测。我是否需要使用不同的编译器选项构建 OpenCV?

【问题讨论】:

    标签: c opencv scheme racket ffi


    【解决方案1】:

    是的,在 OSX 上 .dylib 文件是这些(动态)库。在 Windows 上它们将是 .dll 文件和在 linux 上 .so。请注意,ffi-lib 会进行一些搜索,因此您可以使用单个名称,它会使用系统的工具(例如,dlopen())来查找库。

    【讨论】:

    • 谢谢,伊莱。所以看起来库文件是以某种与我的 Racket 安装不兼容的方式编译的?我跑了:(ffi-lib "/usr/local/Cellar/opencv/2.2/lib/libopencv_core"),结果是(dlopen(/usr/local/Cellar/opencv/2.2/lib/libopencv_core.dylib, 10 ):没有找到合适的图像。确实找到了:/usr/local/Cellar/opencv/2.2/lib/libopencv_core.dylib:mach-o,但架构错误)。
    • 可能——你现在要解决特定于 OSX 的问题,而我对此的经验几乎为零。
    • @Ben:这只是一种预感,但听起来像是 32 位/64 位不匹配(lib 在那里,但架构错误)。我相信 Racket 是 32 位的,并且由于您使用 Homebrew 安装了 OpenCV,因此您可能拥有 64 位版本。恐怕我不知道如何让 brew 构建 32 位二进制文​​件。
    • @molbdnilo:谢谢你的猜测——我认为你可能是对的。我可能不得不放慢速度,看看我是否可以艰难地重建 OpenCV。要么这样,要么将开发转移到旧的 32 位机器上。
    猜你喜欢
    • 2012-11-23
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多