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