Как исправить файл .c, когда заголовок включен, но ошибка все еще сохраняется - PullRequest
0 голосов
/ 08 июня 2019

Я новичок в разработке приложений (android) и хочу интегрировать код C / C ++ в мой проект.Я застрял в сообщении об ошибке, которое озадачивает меня, и попробовал все предложения, которые я мог найти в Интернете.Я не могу поделиться всеми кодами из-за соображений конфиденциальности, но я ценю вашу поддержку, помогающую мне.

У меня есть две версии проекта, одна версия имеет только один класс Java, с 5 .h и 4.c.и 1 .cpp файл.Этот проект хорошо отлаживается / компилируется, но когда я копирую его в другой проект, который является тем же, за исключением того, что у меня есть несколько классов и созданный вкус продукта для 3 версий приложения, я получаю предупреждение.

> "warning: implicitly declaring library function 'cabsf' with type
> 'float (_Complex float)' [-Wimplicit-function-declaration]"  "include
> the header <complex.h> or explicitly provide a declaration for
> 'cabsf'" "undefined reference to `cabsf'"

Примечание: cabsf заимствован из библиотеки, а не функции, которую я определил.

Я уже добавил #include в файл .c, который имеет функцию cabsf, но ошибка по-прежнему отображается, хотяЯ так и сделал.Эта функция предопределена в библиотеке complex.h.Поэтому мне не нужно было определять это в моей программе.

То, что я не пробовал, это компиляция с использованием терминала, потому что я использовал подход android studio для создания файла cmake, чтобы помочь с компиляцией.

Я часто вижу предложение добавить код "gcc main.c misc.c -o main -lm", но я не знаю, как и где разместить такой код в Android Studio.


Вот файл Cmake:

cmake_minimum_required  (VERSION 3.4.1) 


add_library( 
        vggsup

        STATIC

        src/main/cpp/c_file1.c
        src/main/cpp/h_file1.h
        src/main/cpp/c_file2.c
        src/main/cpp/h_file2.h
        src/main/cpp/h_file3.h
        src/main/cpp/c_file4.c
        src/main/cpp/c_file5.c
        src/main/cpp/h_file5.h
        src/main/cpp/c_file6.c
        src/main/cpp/h_file6.h
        )

add_library(native-lib 
            SHARED 
            src/main/cpp/native-lib.cpp)

find_library(
        log-lib
        log)

target_link_libraries( 
        native-lib

        ${log-lib}
          secondtype)

********************************************************

Также здесь находится приложение:

android {
        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
            incremental = false
        }

    }

    flavorDimensions "default"

    productFlavors {

        dev {
            dimension "default"
            applicationIdSuffix '.dev'
            versionNameSuffix "-dev" 
            resValue "string", "app_name", "AppName_Dev" 
            resConfigs "en", "xxhdpi"
            externalNativeBuild {

                cmake {
                    cppFlags ""
                }
            }
        }

        mock {
            dimension "default"
            applicationIdSuffix '.mock'
            versionNameSuffix "-mock"
            resValue "string", "app_name", "AppName_Mock"
            externalNativeBuild {

                cmake {
                    cppFlags ""
                }
            }
        }

        prod {
            dimension "default"
            resValue "string", "app_name", "AppName"
            externalNativeBuild {
                cmake {
                    cppFlags ""
                }
            }
        }
    }
        dexOptions {
        preDexLibraries = false
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false


        }
    }
    externalNativeBuild {

    cmake {
        path "CMakeLists.txt"
    }
    }

Я ожидаю, что все отладится, но я получаю сообщения об ошибках.Может ли это быть связано со вкусом продукта?Неправильно ли я структурировал свою папку cpp, чтобы это приводило к путанице со вкусами продукта?Любые предложения или предложения будут полезны.Спасибо за ваше время

...