如何解决为什么我遇到cygwin错误?
|static jboolean libinit(jnienv *env,jobject obj,jint sdk) {
/*
#include <sys/system_properties.h>
int sdk;
char c[PROP_VALUE_MAX];
if(__system_property_get(\"ro.build.version.sdk\",c) > 0) sscanf(c,\"%d\",&sdk);
else sdk = 8;
*/
__android_log_print(ANDROID_LOG_INFO,\"liblossless\",\"libinit: sdk=%d\",sdk);
if(!libhandle) {
if(sdk < 8) libhandle = dlopen(\"/data/data/net.avs234/lib/libatrack8.so\",RTLD_Now);
else libhandle = dlopen(\"/data/data/net.avs234/lib/libatrack9.so\",RTLD_Now);
if(libhandle) {
libmedia_pause = (typeof(libmedia_pause)) dlsym(libhandle,\"libmedia_pause\");
libmedia_resume = (typeof(libmedia_resume)) dlsym(libhandle,\"libmedia_resume\");
libmedia_start = (typeof(libmedia_start)) dlsym(libhandle,\"libmedia_start\");
libmedia_stop = (typeof(libmedia_stop)) dlsym(libhandle,\"libmedia_stop\");
libmedia_write = (typeof(libmedia_write)) dlsym(libhandle,\"libmedia_write\");
libmediacb_start = (typeof(libmediacb_start)) dlsym(libhandle,\"libmediacb_start\");
libmediacb_stop = (typeof(libmediacb_stop)) dlsym(libhandle,\"libmediacb_stop\");
libmediacb_write = (typeof(libmediacb_write)) dlsym(libhandle,\"libmediacb_write\");
libmediacb_wait_done = (typeof(libmediacb_wait_done)) dlsym(libhandle,\"libmediacb_wait_done\");
}
}
__android_log_print(ANDROID_LOG_INFO,\"libinit: handle=%p\",libhandle);
return libhandle != 0;
}
static jboolean libexit(jnienv *env,jobject obj) {
int ret = 0;
__android_log_print(ANDROID_LOG_INFO,\"libexit\");
if(libhandle) {
ret = dlclose(libhandle) ? 0 : 1;
libhandle = 0;
}
return ret;
}
用cygwin编译会给我一个错误:
/cygdrive/C/androidndk4/apps/lossless/project/bin/ndk/local/armeabI/Objs/lossles
s / main.o:在函数libexit\':
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.c:247: undefined referenc
e to
dlclose\中
/ cygdrive / C / androidndk4 / apps / lossless / project / bin / ndk / local / armeabi / objs / lossles
s / main.o:在功能“3ѭdlopen\”中
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.c:228:未定义referenc
e至dlsym\'
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.c:229: undefined referenc
e to
dlsym\'
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.c:230:未定义referenc
e至dlsym\'
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.c:231: undefined referenc
e to
dlsym\'
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.c:232:未定义referenc
e至dlsym\'
/cygdrive/C/androidndk4/apps/lossless/project/bin/ndk/local/armeabI/Objs/lossles
s/main.o:/cygdrive/C/androidndk4/apps/lossless/project/jni/main.c:233: more unde
fined references to
dlsym\',然后按照
/ cygdrive / C / androidndk4 / apps / lossless / project / bin / ndk / local / armeabi / objs / lossles
s / main.o:在功能libinit\':
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.c:225: undefined referenc
e to
dlopen\中
collect2:ld返回1退出状态
制作:* [/ cygdrive / C / androidndk4 / apps / lossless / project / bin / ndk / local / armeabi / l
iblossless.so]错误1
解决方法
您的错误是提到“未定义的引用”。这意味着未定义您正在使用的函数(dlopen,dlclose,dlsym等)。检查这些文件是否包含正确的头文件,如果这些函数来自共享库,请检查是否正确链接了所需的库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。