包含标题但错误仍然存​​在时,如何修复.c文件

时间:2019-06-08 13:12:43

标签: android c++ cmake build.gradle

我是一名新手应用程序开发人员(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是从库中借用的,而不是我定义的函数。

我已经在具有cabsf函数的.c文件中添加了#include,但是即使我这样做也仍然显示错误。 此功能在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文件夹结构是否错误,导致与产品口味混淆?任何建议或线索都将有所帮助。谢谢您的时间

0 个答案:

没有答案