。so文件具有意外的e_machine:62(EM_X86_64)

问题描述 投票:0回答:1

我在vsc中使用c ++创建了一个共享库。以下命令用于构建共享库(.so文件)

g++ -Wall -fPIC -I. -c Encrypt.cpp
g++ -shared -o libencrypt.so Encrypt.o
g++ -Wall -I. -c main.cpp
g++ -o test main.o -L. -lencrypt -l:libcryptopp.a
export LD_LIBRARY_PATH=.
./test

我在src/main/jniLibs/<architectures>中的x86, armeabi-v7a, arm64-v8a中的android项目中实现了libencrypt.so>

然后在我的app/build.gradle中添加了ff:

ndk {
     abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
}

最后是我的MainActivity.java

class MainActivity : AppCompatActivity() {
    companion object {
        init {
            System.loadLibrary("encrypt")
        }
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //tv_cipher.text = encryptString("test")
    }

    external fun encryptString(plaintext: String): String
}

抛出错误:libencrypt.so" has unexpected e_machine: 62 (EM_X86_64)

注意:创建共享库时,我正在使用64位的Ubuntu 18.04环境。谢谢!

我在vsc中使用c ++创建了一个共享库。以下命令用于构建共享库(.so文件)g ++ -Wall -fPIC -I。 -c Encrypt.cpp g ++-共享-o libencrypt.so Encrypt.o g ++ -Wall ...

android c++ java-native-interface shared-libraries .so
1个回答
0
投票

错误非常清楚:您为单个体系结构(x86_64或64位Intel)编译了libencrypt.so,并试图将其用于ARM体系结构(准确地说是ARM7和AArch64)。

© www.soinside.com 2019 - 2024. All rights reserved.