I am working on an android VR app that works with cargo apk run
.
I have completed an earlier app that can draw objects (suzanne and a color triangle) in VR.
I am moving to the next step where I want to use gstreamer to provide video for a texture, but if I call gst::init()
in my code, I get this error at run time:
2023-06-28 10:47:25.869 24722-24722/rust.openxr_gst D/AndroidRuntime: Shutting down VM
2023-06-28 10:47:25.873 24722-24722/rust.openxr_gst E/AndroidRuntime: FATAL EXCEPTION: main
Process: rust.openxr_gst, PID: 24722
java.lang.UnsatisfiedLinkError: Unable to load native library "/data/app/~~FA8MGKpl2mLhXMiDdEkMWw==/rust.openxr_gst-KtRUUHinSBxQJoTnbLGurA==/lib/arm64/libopenxr_gst.so": dlopen failed: cannot locate symbol "ffi_type_void" referenced by "/data/app/~~FA8MGKpl2mLhXMiDdEkMWw==/rust.openxr_gst-KtRUUHinSBxQJoTnbLGurA==/lib/arm64/libopenxr_gst.so"...
at android.app.NativeActivity.onCreate(NativeActivity.java:178)
at android.app.Activity.performCreate(Activity.java:8057)
at android.app.Activity.performCreate(Activity.java:8037)
calling gst::init()
causes my app to refer to several undefined symbols in the .so
$ nm ./target/aarch64-linux-android/debug/*.so | grep ffi_type
U ffi_type_double
U ffi_type_float
U ffi_type_pointer
U ffi_type_sint32
U ffi_type_sint64
U ffi_type_uint32
U ffi_type_uint64
U ffi_type_void
000000000038535c t value_from_ffi_type
000000000038515c t value_to_ffi_type
How can I figure out which crate is depending on these, and then figure out how to link in the proper library to satisfy those symbols?