SDL_android.c项目包含一个SDL2活动类(SDLActivity),它传递C库的名称,并在其中使用对nativeRunMain()
的JNI调用来回调SDL_android.c。然后使用dlopen
和dlsym
动态调用C回调。
但是,在运行adb logcat
时,nativeRunMain()说它是Couldn't find function main in library lib<android-binary>.so
。
我的cc_library定义如下所示:
cc_library(
name = "main",
srcs = ["jni/main.c"],
deps = [
"@libSDL2//:lib"
]
)
main.c
#include <stdio.h>
#include "SDL.h"
int main(int argc, char* argv[]) {
...
}
可重现的示例代码如下:https://files.fm/u/hr62nbr3
发布于 2018-07-25 03:42:04
main
不会作为符号导出,因为它是保留的函数名称,将名称更改为其他名称可以解决此问题。
使用nm -D
检查.so文件的动态符号表,我可以看到main
没有作为符号导出。将函数main
的名称更改为其他名称意味着它将可用。
https://stackoverflow.com/questions/51426104
复制相似问题