Compiler construction 为什么我在cygwin身上出错了?

Compiler construction 为什么我在cygwin身上出错了?,compiler-construction,cygwin,Compiler Construction,Cygwin,s/main.o:在函数libexit'中: /cygdrive/C/androidndk4/apps/lossless/project/jni/main.C:247:未定义的引用 e至dlclose' /cygdrive/C/androidndk4/apps/lossless/project/bin/ndk/local/armeabi/objs/lossles s/main.o:在函数libinit'中: /cygdrive/C/androidndk4/apps/lossless/projec

s/main.o:在函数
libexit'中:
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.C:247:未定义的引用
e至
dlclose' /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:226:未定义的引用
e至
dlopen' /cygdrive/C/androidndk4/apps/lossless/project/jni/main.C:228:未定义的引用 e至
dlsym'
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.C:229:未定义的引用
e至
dlsym' /cygdrive/C/androidndk4/apps/lossless/project/jni/main.C:230:未定义的引用 e至
dlsym'
/cygdrive/C/androidndk4/apps/lossless/project/jni/main.C:231:未定义的引用
e至
dlsym' /cygdrive/C/androidndk4/apps/lossless/project/jni/main.C:232:未定义的引用 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:更多信息
以下是对
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:未定义引用
e至
dlopen' collect2:ld返回了1个退出状态 make://cygdrive/C/androidndk4/apps/lossless/project/bin/ndk/local/armeabi/l
iblossless.so]Error 1

您的错误提到了“未定义的引用”。这意味着您正在使用的函数(dlopen、dlclose、dlsym等)未定义。检查是否包含正确的头文件,如果这些函数来自共享库,还检查是否正确链接所需库。

我是开发人员的初学者,如何在头文件中包含?非常感谢您的回答。如果有人有想法…我等待语法是:#因此在您的案例中,找到那些dl*函数所在的头文件,并将其包括在内。
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,"liblossless","libinit: handle=%p",libhandle);
    return libhandle != 0;
}

static jboolean libexit(JNIEnv *env, jobject obj) {
   int ret = 0;
     __android_log_print(ANDROID_LOG_INFO,"liblossless","libexit");
    if(libhandle) {
        ret = dlclose(libhandle) ? 0 : 1;
        libhandle = 0;
    }
    return ret;
}
    /cygdrive/C/androidndk4/apps/lossless/project/bin/ndk/local/armeabi/objs/lossles