У меня есть большое количество C++ код должен быть запущен на Android.
Этот код компилируется с помощью Visual C++ компилятор, но он не скомпилирован с gcc (который используется Android NDK
). Проблема заключается в том, что источник содержит много частей, что генерирует ошибку при gcc. Возможно ли скомпилировать источник под VC++
и запустить его на Android? Спасибо.Есть ли способ скомпилировать Visual C++-код для Android?
ответ
Единственный способ запустить родной код C/C++ в java (и так Android) с JNI (Java Native Interface).
Это лучший учебник на сегодняшний день, который поможет вам настройку JNI с Android Studio
и Android NDK
: http://ph0b.com/new-android-studio-ndk-support/
В вашем случае вы должны извлечь исходный код ваших C++ проект (то есть все .cpp; .h; .hpp файлов) и добавить их в папку JNI (как только вы настроили среду JNI с вышеупомянутым учебником (или любым другим руководством). Gradle скомпилирует их, если вы правильно включите библиотеку.
NB:
- Вам не нужно в Makefile: вместо того, чтобы использовать CFLAGS в вашем Gradle построить файл;
- Убедитесь, что правильно поняли JNI, чтобы создать правильные файлы заголовков, которые свяжут ваш собственный код с вашим java-кодом;
Надеюсь, это поможет!
Спасибо! Если я использую Java NDK (как вы говорите), значит, я использую GCC. Но код не компилируется под GCC. Я пытаюсь найти обходное решение вместо изменения исходного кода, чтобы он скомпилировался под GCC. –
Это правда, что Android NDK использует GCC. Каковы ошибки (-ы) компиляции? У вас есть Makefile? Я не очень осведомлен в C++, но могу вам помочь, если это возможно. – Mackovich
Есть много ошибок из-за нестандартного исходного кода ... Действительно, много. Только некоторые из них, например: [тени] (http://stackoverflow.com/questions/20875033/clang-vs-vcerror-declaration-of-t-shadows-template-parameter); ** Отсутствие ошибок в именах типов **; ** std :: ошибки исключения **; [дополнительная квалификация] (http://stackoverflow.com/questions/5642367/extra-qualification-error-in-c) И так далее. Я уже исправил пару, но это кажется бесконечным. –
- 1. Есть ли способ скомпилировать libuv с android NDK?
- 2. Есть ли способ скомпилировать дополнительный код FF
- 3. Есть ли способ скомпилировать или скомпилировать компоненты PHP/DHTML/JS?
- 4. Есть ли способ скомпилировать C11-C89?
- 5. Есть ли способ скомпилировать GnuTLS в eclipse?
- 6. Есть ли способ скомпилировать gcc для поддержки одного языка?
- 7. Есть ли способ скомпилировать стандартный ML для JavaScript, используя MLTon?
- 8. Есть ли способ скомпилировать DLL в ваш exe?
- 9. Есть ли способ автоматизировать Visual Studio 2013?
- 10. Есть ли простой способ скомпилировать проект sbt с Dotty?
- 11. Есть ли способ скомпилировать Javascript, используя мой код на C#?
- 12. Есть ли способ скомпилировать программу без сборки в GCC?
- 13. Есть ли способ скомпилировать программу c/C++ из python?
- 14. Есть ли способ скомпилировать протокол буферов в чистый код Python?
- 15. Есть ли способ заставить SQLAlchemy предварительно скомпилировать запрос?
- 16. Есть ли способ скомпилировать в JAR, хотя возникают ошибки
- 17. Есть ли способ восстановить индекс справки для Visual Studio 2008?
- 18. Есть ли другой способ создания opencv для visual studio 2015?
- 19. Есть ли способ скомпилировать один файл в Xcode 5?
- 20. Есть ли способ создать, скомпилировать и загрузить динамически страницу ASPX
- 21. Есть ли способ «скомпилировать» код Python на Arduino (Uno)?
- 22. Есть ли способ скомпилировать и запустить один .cpp-файл в проекте Visual Studio Express '12?
- 23. Есть ли способ скомпилировать Java-код в DLL?
- 24. Есть ли способ скомпилировать между Валой и Джини?
- 25. Есть ли способ условно скомпилировать Swift 1.1 и 1.2?
- 26. Есть ли способ скомпилировать MDF-файл SQL2000/2005?
- 27. Есть ли способ скомпилировать лямбда-выражение, передающее время, сгенерированное объектом?
- 28. Есть ли способ скомпилировать программы MS-DOS в Windows 7?
- 29. Есть ли способ скомпилировать, чтобы скрыть исходный код?
- 30. Есть ли способ скомпилировать источник ATS в байт-код JVM?
* генерирует ошибку при gcc * похоже, что код использует MS extenstion (или библиотеку окон) ... тогда ответ не будет ... – Selvin
Спасибо! Нет, он не использует их. Корень ошибок состоит в том, что источник не соответствует стандартам C++, но gcc делает. –