iT邦幫忙

0

AndroidStudio在建置含有C++11之功能時發生錯誤

cyrc 2019-04-26 11:12:011275 瀏覽
  • 分享至 

  • xImage

想請問是否有人遇過以下問題~

原始碼內含C++語法,使用ndk-build時,
關於C++11的功能std::function
std::function<bool()>想轉型為std::function<void()>時跳出建置錯誤
(我使用vs2017直接測試是可以成功執行的)

在Application.mk中的設定包含
APP_STL := c++_static
APP_CPPFLAGS += -std=c++11
NDK_TOOLCHAIN_VERSION = 4.8(也試過4.9)

Android NDK版本:r10e
AndroidStudio版本:3.3.2
gradle版本:4.10.1

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
小魚
iT邦大師 1 級 ‧ 2019-04-26 11:29:58

Android Studio 和 C++ 11 根本就是兩種語言,
你在VS可以開發是因為微軟有作一些轉換處理吧,
不過如果你要專精Android最好還是乖乖學Android Studio,
這是我的個人淺見...

weiclin iT邦高手 4 級 ‧ 2019-04-26 17:44:02 檢舉

Android 一直都可以用 C 語言寫, 只是沒那麼常見而已
官方都還有給範例呢:https://developer.android.com/ndk/samples/sample_na

小魚 iT邦大師 1 級 ‧ 2019-04-26 17:50:17 檢舉

喔喔,
是這樣子喔...

cyrc iT邦新手 5 級 ‧ 2019-04-30 11:28:22 檢舉

感謝回應~目前只是在app開發工作上偶有需求,尚無系統性的學習
或許有機會的話...會再多看一些Android相關的知識吧

0
weiclin
iT邦高手 4 級 ‧ 2019-04-26 16:06:10

NDK r19c 可以編譯

測試程式:

bool bool_function()
{
    return false;
}

void testing_func()
{
    std::function<void()> foo = bool_function;
    foo();
}
cyrc iT邦新手 5 級 ‧ 2019-04-30 11:26:02 檢舉

感謝回應~不過如果用新版的ndk build也會有其他地方出錯(苦笑

weiclin iT邦高手 4 級 ‧ 2019-04-30 14:23:28 檢舉

cyrc 用新版的吧, 因為從 gcc 改成 clang 了, 你大概是遲早要修理這些出錯的地方

我要發表回答

立即登入回答