我是一名新手应用程序开发人员(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文件夹结构是否错误,导致与产品口味混淆?任何建议或线索都将有所帮助。谢谢您的时间