2

我创建了一个示例 Opencv C++“.so”文件,它将简单地显示 opencv Python 脚本传递的图像(即,我的 python 脚本将调用 C++“.so”文件并将图像传递给它)。python 和 C++ 之间的通信是通过 Boost 库完成的。

我在 64 位 ubuntu 机器上完成了这一切。现在我需要在 32 位 ubuntu 机器上运行我的 python 脚本,它调用“.so”,我得到以下错误。

cv2.so: wrong ELF class: ELFCLASS64

这是因为opencv“cv2.so”预计是32位的?如何在 ubuntu 64 位机器中创建 32 位“cv2.so”?我还需要创建自己的“.so”文件(显示图像)为 32 位吗?

4

1 回答 1

3

你是对的。在您的32-bitUbuntu 机器上,您需要确保您的可执行文件及其所有依赖项都是32-bit. 这意味着您需要重新编译您.so的输入32-bit(或从第 3 方获取)。
要编译 32 位库,您需要向编译器和链接器指明这一点,很可能带有标志(例如-m32在 的情况下gcc

于 2013-10-12T02:11:18.237 回答