1

我想在编译我自己的共享库时将现有的共享库 (FlashRuntimeExtensions.so) 链接到我的 C 代码。但是无论我尝试什么,我总是会遇到同样的错误;文件格式错误。有人知道如何解决这个问题吗?

这是我的编译命令:

$ g++ -Wall ane.c FlashRuntimeExtensions.so -o aneObject
FlashRuntimeExtensions.so: could not read symbols: File in wrong format
collect2: ld gaf exit-status 1 terug
4

3 回答 3

1

您的命令行尝试生成 x86 代码并使用您的发行版中可用的本机 g++ 将其链接到 ARM 代码。

这行不通。使用此处提供的 Android NDK:http: //developer.android.com/tools/sdk/ndk/index.html

NDK 包括一组交叉工具链(编译器、链接器等),可以在 Linux、OS X 和 Windows(使用 Cygwin)平台上生成本机 ARM 二进制文件。

于 2012-12-13T10:15:57.680 回答
0

一般.so会使用-l.

-lpthread比如我们使用的pthread 。

gcc sample.c -o myoutput -lpthread

但根据@chill 的声明,您在命令中所做的只是正确的。

我建议您参考以下链接。

C++ 链接器错误 SDL 图像 - 无法读取符号

于 2012-12-13T09:05:40.510 回答
0

这应该是架构不匹配。我曾经遇到过这个问题,我已经通过在同一目标平台上构建库来解决它,这很明显。如果您使用的是 linux 或 Unix 之类的操作系统,您可以通过 file 命令查看,如果您使用的是 windows,您可以使用 Dependency Walker 看到。您需要确保所有库都与架构匹配。

于 2013-04-22T08:47:38.470 回答