Через несколько дней я могу скомпилировать openalpr в Ubuntu 18.04, и теперь у меня есть libopenalprjni.so и два файла jni, которые создаются автоматически (com_openalpr_jni_Alpr.h и openalprjni.cpp). Также у меня есть Main.Java с некоторыми другими исходными файлами java, которые, кажется, не являются связанными с Android исходниками java!
Я создаю статическую разделяемую библиотеку jni и использую com_openalpr_jni_Alpr.h и openalprjni.cpp для нее, а также ссылаюсь на libopenalprjni.so и добавляю alpr.h в качестве внешней зависимости. но когда я его компилирую, у меня ошибка MSB6006: "clang.exe" завершен с кодом 1.
Вот мой вывод в визуальной студии 2017:
ANDROID_HOME=C:\ProgramData\Microsoft\AndroidSDK\25
ANT_HOME=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Apps\apache-ant-1.9.3
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_172
NDK_ROOT=C:\Microsoft\AndroidNDK64\android-ndk-r15c
pch.h
nativealpr.cpp
nativealpr.cpp(89,2): warning : 'delete' applied to a pointer that was allocated with 'new[]'; did you mean 'delete[]'? [-Wmismatched-new-delete]
delete buf;
^
[]
nativealpr.cpp(81,23): note: allocated with 'new[]' here
unsigned char* buf = new unsigned char[len];
^
1 warning generated.
undefined reference to 'alpr::Alpr::Alpr(std::string, std::string, std::string)'
undefined reference to 'alpr::Alpr::isLoaded()'
undefined reference to 'alpr::Alpr::recognize(std::string)'
undefined reference to 'alpr::Alpr::toJson(alpr::AlprResults)'
undefined reference to 'alpr::Alpr::recognize(std::vector<char, std::allocator<char> >)'
undefined reference to 'alpr::Alpr::toJson(alpr::AlprResults)'
undefined reference to 'alpr::Alpr::recognize(unsigned char*, int, int, int, std::vector<alpr::AlprRegionOfInterest, std::allocator<alpr::AlprRegionOfInterest> >)'
undefined reference to 'alpr::Alpr::toJson(alpr::AlprResults)'
undefined reference to 'alpr::Alpr::setDefaultRegion(std::string)'
undefined reference to 'alpr::Alpr::setDetectRegion(bool)'
undefined reference to 'alpr::Alpr::setTopN(int)'
undefined reference to 'alpr::Alpr::getVersion()'
clang.exe: error: linker command failed with exit code 1 (use -v to see invocation)
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Application Type\Android\3.0\Android.Common.targets(104,5): error MSB6006: "clang.exe" exited with code 1.