Как использовать libopenalprjni.so в проекте Android? - PullRequest
0 голосов
/ 04 ноября 2018

Через несколько дней я могу скомпилировать 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.
...