2016-01-13 53 views
0

我有大量的C++代碼需要在Android上運行。
此代碼編譯與Visual C++編譯器,但它不編譯與gcc(它由Android NDK使用)。 問題是,源代碼包含很多在gcc下生成錯誤的部分。是否有可能根據VC++編譯源代碼並使其在Android上運行? 謝謝。有什麼方法可以將Visual C++代碼編譯到Android?

+0

*在gcc下生成錯誤*好像代碼使用了一些MS擴展(或windows庫)...然後回答是否... – Selvin

+0

謝謝!不,它不使用任何這些。錯誤的根源在於源代碼不遵循C++標準,但gcc確實如此。 –

回答

0

運行原生C/C++代碼在java(和Android)中的唯一方法是使用JNI (Java Native Interface)

這是迄今爲止,幫助您與Android Studio設置JNI最好的教程和Android NDKhttp://ph0b.com/new-android-studio-ndk-support/

你的情況,你要提取您的C源代碼++項目(即所有的.cpp; .h; .hpp files),並將它們添加到JNI文件夾中(一旦您使用上述教程(或任何其他指南)設置好JNI環境後,只要您正確包含該庫,Gradle就會編譯它們。

注:

  • 你不需要一個Makefile:改用CFLAGS在搖籃建立文件;
  • 確保正確理解JNI,以便創建將您的本地代碼與您的java代碼鏈接的正確頭文件;

我希望它有幫助!

+0

謝謝!如果我使用Java NDK(如你所說),那麼這意味着我使用GCC。但是代碼不能在GCC下編譯。我試圖找到一種解決方法,而不是修改源代碼以使其在GCC下編譯。 –

+0

的確,Android NDK使用GCC。編譯錯誤是什麼?你有Makefile嗎?我不是很瞭解C++,但如果可能的話,我可以幫助你。 – Mackovich

+0

由於非標準源代碼有很多錯誤......真的很多。只是其中幾個例如: [陰影](http://stackoverflow.com/questions/20875033/clang-vs-vcerror-declaration-of-t-shadows-template-parameter); **缺少typename錯誤**; ** std ::異常錯誤**; [額外資質](http://stackoverflow.com/questions/5642367/extra-qualification-error-in-c) 依此類推。我已經修好了一對,但似乎沒完沒了。 –

相關問題