【发布时间】:2014-07-12 00:15:06
【问题描述】:
我使用 NDK 构建了我的共享库,其中几乎没有其他库。我的库几乎没有定义“外部”函数。由于它是一个库,因此这些“外部”函数随后在项目 (.cpp) 文件中声明。我有一个问题,应用程序构建得很好,并在设备上崩溃并出现以下错误:
07-12 00:45:03.680: E/dalvikvm(2161): dlopen("/data/app-lib/org.libsdl.app-16/libRTEngine.so") 失败:dlopen 失败:找不到“libRTEngine.so”引用的符号“RTEngineSetup”...
这个 RTEngineSetup 函数在我的库中定义为:extern "C" void RTEngineSetup(); 然后我的应用程序将其声明为: void RTEngineSetup() { ... }
似乎无法将它们链接在一起。该系统在台式机上运行良好。
这是我的代码设计图: http://s14.postimg.org/s0r83u801/my_code.png
这是我如何构建我的库(第一部分)和我的应用程序(包括我的库)(第二部分): http://ann-tech.com/lib_Android.txt
如果有人知道为什么'extern' 定义 () 没有与它在应用程序的 .cpp 文件中的声明链接,请告诉我。现在浪费了 2 天。
感谢您的宝贵时间。
【问题讨论】:
标签: android android-ndk shared-libraries shared extern