Я новичок в разработке приложений (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, чтобы это приводило к путанице со вкусами продукта?Любые предложения или предложения будут полезны.Спасибо за ваше время