向android移植opencv的錯誤筆記

來源:互聯網
上載者:User

至於opencv的環境配置這裡就不再囉嗦了,網上有很多這樣的文章,也很好,請參考那些優秀的部落格。

第一個問題:<vector>這個檔案無法找到。我先試了試http://stackoverflow.com/questions/4893403/cant-include-c-headers-like-vector-in-android-ndk這上面說的方法,具體就是在application..mk中添加APP_STL := gnustl_static  ,但這種方法不奏效啊,依然報“ fatal error: vector: No
such file or directory”。我查了查android官方的例子有沒有使用<vector>的例子,查了查還真有,我的路徑是“D:\android\android-ndk-r8e\tests\device\test-gnustl-copy_vector_into_a_set”裡面有一個使用<vector>的例子,我試著使用自己的cygwin編譯,並且通過了,這說明我的cygwin沒有問題。

我把這個例子的android.mk和application.mk抄寫到我的工程裡,還是出現 fatal error: vector: No such file or directory”,最後的差別就是副檔名android的官方例子是cpp,我的副檔名是c,我改過來了,然後編譯成功了。

第二個問題:把c改成cpp後另一個問題出現了,”operand of '->' has non-pointer type 'JNIEnv {aka _JNIEnv}' “又報了這個錯,原來cpp檔案android的ndk它就預設這是個c++檔案,使用c++介面,如果是c,ndk預設在編譯時間使用c介面因此造成這種問題。改正後的是:

這個問題的參考網址:http://bbs.csdn.net/topics/390355890

問題3:使用多個cpp檔案編譯。把一個大的功能分散到多個函數中,並且把每個函數寫在一個cpp檔案中,這符合c語言的模組化思想,也便於程式員看代碼。可能語言表達不清楚,直接:這個jni檔案夾中有兩個cpp檔案,一個是jni_part.cpp,一個是test.cpp.

如果在vs2010中編輯的話不需要做任何的改動,直接在test.hpp中聲明以下,然後再在jni_part.cpp中包含這個test.hpp檔案即可,但是無論在ndk,還是在gcc中,這種簡單的做法是行不通的,在gcc中需要更改make檔案,在ndk中則需要改動Android.mk檔案。畫三角的是只有jni_part.cpp時的mk檔案,當加入test.cpp後需要添加對號所在的那行文字。並且這一行的位置也有要求,必須在include$()和最後的一個include$()之間。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.