在安卓 NDK 中使用"dynamic_cast"时会出现"UnsatisfiedLinkError"
"UnsatisfiedLinkError" appears when "dynamic_cast" is used in Android NDK
我是Android开发的新手,我面临着下一个问题:当我使用使用使用"dynamic_cast"表达式的C++代码时,当我在模拟器上启动应用程序时,会出现"不满意的链接错误" 我试着在安卓2.3.3上运行它。我用了android-ndk-r7b。 我的应用程序.mk: 我的Android.mk: 使用动态强制转换的代码片段: 日志猫说: 有人知道如何解决这个问题吗?APP_OPTIM := debug
APP_ABI := armeabi
APP_STL := gnustl_static
APP_MODULES := native_lab
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native_lab
LOCAL_SRC_FILES := native.cpp enum_if.cpp torrent.cpp
LOCAL_CPP_FEATURES := rtti exceptions
LOCAL_LDLIBS := -llog -lz
/home/l/android9_toolchain/arm-linux-androideabi/lib/libstdc++.a
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
include $(BUILD_SHARED_LIBRARY)
namespace libtorrent
{
template <class T>
T* alert_cast(alert* a)
{
return dynamic_cast<T*>(a);
}
}
.....
using namespace libtorrent;
if (torrent_finished_alert* p = alert_cast<torrent_finished_alert>(a)){}
03-27 07:28:26.465: D/dalvikvm(404): Trying to load lib /data/data/com.example/lib/libnative_lab.so 0x405149b8
03-27 07:28:26.496: W/dalvikvm(404): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lcom/example/Bt2Activity;
03-27 07:28:26.555: W/dalvikvm(404): Class init failed in newInstance call (Lcom/example/Bt2Activity;)
03-27 07:28:26.555: D/AndroidRuntime(404): Shutting down VM
03-27 07:28:26.575: W/dalvikvm(404): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-27 07:28:26.615: E/AndroidRuntime(404): FATAL EXCEPTION: main
03-27 07:28:26.615: E/AndroidRuntime(404): java.lang.ExceptionInInitializerError
03-27 07:28:26.615: E/AndroidRuntime(404): at java.lang.Class.newInstanceImpl(Native Method)
尝试将这些行包含到应用程序中。mk:
APP_CPPFLAGS += -frtti
APP_CPPFLAGS += -fexceptions
您有Java中标记为"本机"的方法吗?
模拟器中很可能存在错误。如果你能在没有模拟器的情况下测试你的应用程序,一切都会很好。我认为模拟器中有一些逻辑错误造成了这个问题。比如当你调用alert_cast(a)){}引用torrent_finished_alert时,uare传递在模拟器上是不可测试的,这段代码必须在模拟器中编码,即动态强制转换运算符。
- 如何理解C++标准N3337中的expr.const.cast子句8
- C++Cast运算符过载
- 错误:"cast"未命名类型void setCastDescription(std::string
- 通过使用 const-cast 的非常量引用来延长临时的寿命
- "(void) cast"与功能有什么区别 "__attributes__"来沉默未使用的参数警告?
- C++:"Expected '(' for function-style cast or type construction"错误
- 为什么选择 g++ 给予者:"error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]"
- Gtk+ g_signal_connect() 和 C++ lambda 会导致"invalid cast"错误
- Shared_ptr cast vs static_cast speed
- 在 iOS 上使用 Aruco 构建 OpenCV 时"Functional-style cast from id to double is not allowed"
- 覆盖 CAST 运算符(我认为它被称为向下转换)
- C++错误,隐 <function-style-cast> 式要求使用模板化类一次调用多个构造函数的多个转换
- 如何修复<function-style-cast>错误:无法从'initializer list'转换为asdending比较<W>(模板函子)
- C++ C++ 中的函数声明,键入 CAST
- static_cast会丢弃错误,但C风格的演员cast有效
- C++ cast char * to unsigned char
- 禁用 Clang 中的"cast from pointer to smaller type uint32_t"错误
- 是否可以使用gcc 3.3版修复与int*cast相关的Sun Solaris OS 5.8分段故障
- C++ const-cast 一个引用
- 错误 C2440: 'type cast':无法从 'bool' 转换为 'CString'