日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【错误记录】Visual Studio 中编译 NDK 报错 ( no matching function for call to ‘cacheflush‘ cacheflush(); )

發(fā)布時(shí)間:2025/6/17 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【错误记录】Visual Studio 中编译 NDK 报错 ( no matching function for call to ‘cacheflush‘ cacheflush(); ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、報(bào)錯(cuò)信息
  • 二、報(bào)錯(cuò)信息





一、報(bào)錯(cuò)信息



使用 Visual Studio 2019 編譯 Android 平臺(tái)的 NDK 項(xiàng)目 ; 編譯時(shí)報(bào)錯(cuò) ;

報(bào)錯(cuò)信息 :

1>./native/native.cpp(428,14): warning G0C39A92D: 'SearchCode' has C-linkage specified, but returns user-defined type 'std::string' (aka 'basic_string<char>') which is incompatible with C [-Wreturn-type-c-linkage] 1> std::string SearchCode(unsigned char* data,unsigned size){ 1> ^ 1>./native/native.cpp(658,5): error GEF7559A7: no matching function for call to 'cacheflush' 1> cacheflush(); 1> ^~~~~~~~~~ 1>D:/001_Develop/001_SDK/Sdk/ndk/android-ndk-r14b/build//../platforms/android-19/arch-arm/usr/include\unistd.h:183:12: note: candidate function not viable: requires 3 arguments, but 0 were provided 1>extern int cacheflush(long start, long end, long flags); 1> ^ 1>1 warning and 1 error generated. 1>make: *** [obj/local/armeabi-v7a/objs/native/native/native.o] Error 1 1>D:\001_Develop\017_Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(46,5): error MSB3073: 命令“"D:\001_Develop\001_SDK\Sdk\ndk\android-ndk-r14b\build\ndk-build.cmd" NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk NDK_APPLICATION_MK=Application.mk ”已退出,代碼為 21>已完成生成項(xiàng)目“magic.vcxproj”的操作 - 失敗。 ========== 生成: 成功 0 個(gè),失敗 1 個(gè),最新 0 個(gè),跳過(guò) 0 個(gè) ==========





二、報(bào)錯(cuò)信息



仔細(xì)研究報(bào)錯(cuò)信息 , 發(fā)現(xiàn) D:/001_Develop/001_SDK/Sdk/ndk/android-ndk-r14b/build//../platforms/android-19/arch-arm/usr/include\unistd.h:183:12: note: candidate function not viable: requires 3 arguments, but 0 were provided , 調(diào)用的函數(shù)頭文件是 android-19/arch-arm/usr/include\unistd.h , 這是 ARM 平臺(tái)的頭文件 , 其中的函數(shù)定義的都是 ARM 架構(gòu)的函數(shù) ;

在 ARM 架構(gòu)的 android-19/arch-arm/usr/include/unistd.h 頭文件中 , cacheflush 函數(shù)為 :

extern int cacheflush(long start, long end, long flags);

在 x86 架構(gòu)中該系統(tǒng)調(diào)用無(wú)效 ;

如果編譯的目標(biāo) 函數(shù)庫(kù) 或 可執(zhí)行文件 架構(gòu)有 x86 架構(gòu) , 就會(huì)報(bào)錯(cuò) , 因?yàn)樵摵瘮?shù)只支持 ARM 架構(gòu) ;

#ifndef __i386__cacheflush();

在 Application.mk 中 , 要聲明只為 x86 編譯函數(shù)庫(kù) , 注釋掉 armeabi-v7a armeabi 這兩個(gè)目標(biāo)架構(gòu) ;

APP_ABI := x86 #armeabi-v7a armeabi APP_STL := gnustl_static APP_PLATFORM := android-19

涉及 CPU 操作時(shí) , 注意編譯的架構(gòu) , 以及引用的依賴庫(kù) ;

cacheflush 函數(shù)是系統(tǒng)調(diào)用中刷新 CPU 高速緩存的函數(shù) , 不同的 CPU 架構(gòu) , 對(duì)應(yīng)的實(shí)現(xiàn)也不同 ;

總結(jié)

以上是生活随笔為你收集整理的【错误记录】Visual Studio 中编译 NDK 报错 ( no matching function for call to ‘cacheflush‘ cacheflush(); )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。