1.C++è¦å¦äºä»ä¹
2.c++å¼åå·¥ç¨å¸è¦ä¼åªäºç¥è¯ï¼
3.å¦ä½å¦å¥½C++å¢?源码
4.如何从源码编译OpenCV4Android库
C++è¦å¦äºä»ä¹
å¾å¤æåæ³ç¥éC++è¦å¦äºä»ä¹ï¼ä¸é¢å°±è®©æ们æ¥ççå§ã
é¦å è¿æ¬ãCç¨åºè®¾è®¡è¯è¨ãæ¯å¿ å¤çå ¥é¨ä¹¦ï¼åéè¿å¦ä¹ ãCé·é±ä¸ç¼ºé·ãããC++ Primerãè¿ä¸¤æ¬ç»å ¸çå¦C++ç书æ¥ç¨³åºåºç¡ç¥è¯ï¼ç¶åå¦ä¹ C++ãEffective C++ãè¿æ¬ä¹¦æ¥æé«æçï¼STLæ¯C++çç²¾é«ï¼æ以å¦å¥½STLæ¯å¿ é¡»çï¼æ¨èãSTLæºä»£ç åæãï¼å¦å®åºç¡ç¥è¯å°±å¦æä½ç³»ç»ï¼ç»å ¸çæä½ç³»ç»ä¹¦ç±æãæ·±å ¥ç解计ç®æºç³»ç»ãï¼é¤äºè¿äºè¿å¿ é¡»å¦è®¡ç®æºç½ç»åLinuxç³»ç»ã
C++è¯è¨
C++ï¼æ¯å½é æ åçç¼ç¨è¯è¨ï¼æ¯è¿ç¨é常广æ³çä¸ç§è®¡ç®æºç¼ç¨è¯è¨ï¼æ¥æå¤ç§çç¨åºè®¾è®¡é£æ ¼ï¼å¦ï¼è¿ç¨åç¨åºè®¾è®¡ãæ°æ®æ½è±¡ãé¢å对象ç¨åºè®¾è®¡ãå¶ä½å¾æ çï¼æ¯éç¨çå¤éç¼ç¨èå¼ç¨åºè®¾è®¡è¯è¨ã
C++å ¥é¨
é¦å ææ¸ æ¥C++çä½ç¨ååC++çç®çï¼ç¶åå¼å§ç¬¬ä¸é¶æ®µå¦ä¹ C++çåºç¡ç¥è¯ï¼è¡¨è¾¾å¼ãæ°ç»ãè¿ç®ç¬¦çè¿äºé½æ¯C++çåºç¡è®¤ç¥ï¼ç»æä½ãä½è¿ç®ãé¢å¤ççæ¯å¯¹åºç¡ç¥è¯çæ©å±ï¼åç»è¿ä¼å¦ä¹ å°VC++ãCãTCçï¼äºè§£åå¦ä¹ äºç论ç¥è¯ä»¥åå°±å¯ä»¥å°å¦ä¹ å°çç论ç¥è¯é½è¿ç¨å°å®è·µä¸å»ã
C++çä½ç¨
C++æ¯ä¸ä¸ªä½ç¨äºè®¡ç®æºç¼ç¨ä¸çé«çº§è¯è¨ï¼ä¸»è¦ç¨éæ¯ç¨æ¥ç¼åç³»ç»è½¯ä»¶ååºç¨è½¯ä»¶ï¼æ¯ä¸ä¸ªä½ç¨äºè®¡ç®æºç¼ç¨ä¸çé«çº§è¯è¨ï¼æ¯å¤äºé«çº§è¯è¨åæ±ç¼è¯è¨å½ä¸çä¸ç§è®°è¿°æ§è¯è¨ï¼æ¯è¾é è¿ç¡¬ä»¶åç³»ç»ï¼å®ä¸ä» å¯ä»¥é¢å硬件åç³»ç»ï¼ä¹å¯ä»¥åæ±ç¼è¯è¨ä¸æ ·ç´æ¥è®¿é®ç¡¬ä»¶åè½åé«çº§è¯è¨é¢å广大ç¨æ·ï¼C++ççæ代ç çä¹æ¯å ¶å®é«çº§è¯è¨è¦é«ï¼æ¯é»å®¢çå¿ å¤è¯è¨ï¼å 为æ¥è¿èªç¶è¯è¨ï¼æ以深åç¼ç¨äººååç±ï¼å®¹æè®°å¿ï¼åæ¶ä¾¿äºé 读å书åï¼ä¹éç¨äºæå¦ã
c++å¼åå·¥ç¨å¸è¦ä¼åªäºç¥è¯ï¼
ã计ç®æºç½ç»ãããæä½ç³»ç»åçãããç¼è¯åçããå¦æC++ååºæ¯è¾èå¼±ï¼ä¸ªäººå»ºè®®è¿æ¯ä¸è¦å°C++ä½ä¸ºå ¥é¨è¯è¨ï¼åºäºä¸¤ä¸ªåå èèï¼ ä¸æ¯ C++çé¨æ§ç¸æ¯äºJavaãC#ç纯é¢å对象çè¯è¨èè¨ï¼è¦æ´é¾ä¸äºãé¾å¨è¯æ³åè§åæ´å¤æï¼ä¹é¾å¨C++éè¦æ们èªå·±ç®¡çå åï¼éè¦å¯¹æä½ç³»ç»çå ååé å管çæºå¶æä¸å®çäºè§£ã
äºæ¯æè§å±ä»¬å½å ï¼å°¤å ¶æ¯äºèç½è¡ä¸å¯¹äºC++çéæ±é没é£ä¹å¤§ãèä¸C++æ´å¾åäºå¨Linuxæå¡ç«¯ååå°çæå¡ï¼è¿æ çæ¯ç¼ç¨æ°æçæ¶é´ä¸è½åºæ绩çå°æ¹ï¼æ以éæ©C++å¯è½é¢ä¸´æ´å¤§çå°±ä¸ååã
C++å¸åºéæ±å¤ªå°ï¼C++å¾å¾ä½ä¸ºlinuxåå°æå¡å¨å¼åè¯è¨ï¼è¿é¨åå æç太å°ï¼å°±BATèè¨ï¼åªæTéæ±ç¨å¤ï¼è³äºå ¶ä»äºçº¿äºèç½å ¬å¸ï¼æ´æ¯å°ä¹åå°ãæ以è¿æ¯å»ºè®®éæ©é¨æ§ä½éæ±é«çè¯è¨æ¥å¦ä¹ ï¼æ¯å¦javaï¼C#ï¼æè åç±»ç°å¨å¾ç«çèæ¬è¯è¨å¦pythonï¼phpçï¼æè éæ©å端javascriptåå ¶ç¸å ³æ¡æ¶æ件çã
C/C++è¯è¨åºæ¬ååä¸äºå¤§å¦å¿ 修课æ¯å¦ã计ç®æºç½ç»ãããæä½ç³»ç»åçãããç¼è¯åçãççï¼å¦ææ¯åLinuxæå¡å¨çè¯è¦å¦Linuxçç¥è¯ï¼å¦Linuxå æ ¸ï¼å°è½èªå®ä¹å æ ¸çå°æ¥ï¼ã
å¦Linuxå æ ¸ç¼ç¨ï¼å¦Linuxæå¡å¨è¿ç»´ï¼å¦Linuxç½ç»ç¼ç¨ççç¥è¯ãå¦ææ¯å¼åçè¯ï¼å¦windowsç¼ç¨ã并åä¸å¤çº¿ç¨ãSTLæºç åæççå 容ãå¦ææ¯æ¸¸æå¼åè¿è¦å¦å¼æï¼å¦æ¸¸æç¸å ³çä¸å¥ã
å¦ä½å¦å¥½C++å¢?
æè¿éæäºç»éªï¼å¸æå¯¹ä½ æ帮å©ï¼
1.æC++å½æä¸é¨æ°çè¯è¨å¦ä¹ ï¼åC没å¥å ³ç³»ï¼ççãï¼ï¼
2.çãThinking In C++ãï¼ä¸è¦çãC++åææ»ç¸ãï¼
3.çãThe C++ Programming LanguageãåãInside The C++ Object Modelã,ä¸è¦å 为ä»ä»¬å¾é¾èæ们èªå·±æ¯åå¦è æ以就ä¸çï¼
4.ä¸è¦è¢«VCãBCBãBCãMCãTCçè¯æ±æè¿·æââä»ä»¬é½æ¯éæå¼åç¯å¢ï¼èæ们è¦å¦çæ¯ä¸é¨è¯è¨ï¼
5.ä¸è¦æ¾è¿ä»»ä½ä¸ä¸ªçä¸å»å¾ç®åçå°ç¼ç¨é®é¢ââä»ä»¬å¾å¾å¹¶ä¸é£ä¹ç®åï¼æè å¯ä»¥å¼ä¼¸åºå¾å¤ç¥è¯ç¹ï¼
6.ä¼ç¨Visual C++ï¼å¹¶ä¸è¯´æä½ ä¼C++ï¼
7.å¦class并ä¸é¾ï¼templateãSTLãgeneric programmingä¹ä¸è¿å¦æ¤ââé¾çæ¯é¿æåæå®è·µåä¸éä½åçåè§ç¾¤ä¹¦ï¼
8.å¦æä¸æ¯å¤©æçè¯ï¼æ³å¦ç¼ç¨å°±ä¸è¦æ³ç©æ¸¸æââä½ ä»¥ä¸ºä½ åå°äºï¼å ¶å®ä½ çC++水平并没æåä½ éå ³çè½åä¸èµ·åé«ââå ¶å®å¯ä»¥æ¶å»è®°ä½ï¼å¦C++æ¯ä¸ºäºç¼æ¸¸æçï¼
9.çVisual C++ç书ï¼æ¯å¦ä¸äºC++è¯è¨çï¼
.æµ®èºç人容æ说ï¼XXè¯è¨ä¸è¡äºï¼åºè¯¥å¦YYï¼ââæ¯ä½ èªå·±ä¸è¡äºå§ï¼ï¼
.æµ®èºç人容æé®ï¼æå°åºè¯¥å¦ä»ä¹ï¼ââå«é®ï¼å¦å°±å¯¹äºï¼
.æµ®èºç人容æé®ï¼XXæé±éåï¼ââå»ºè®®ä½ å»æ¢é¶è¡ï¼
.æµ®èºç人容æ说ï¼æè¦ä¸æçï¼æè±æä¸è¡ï¼ââä¸è¡ï¼å¦åï¼
.æµ®èºç人容æé®ï¼XXåYYåªä¸ªå¥½ï¼ââåè¯ä½ å§ï¼é½å¥½ââåªè¦ä½ å¦å°±è¡ï¼
.æµ®èºç人å两ç§ï¼a)åªè§æèä¸å¦ç人ï¼b)åªå¦èä¸åæç人ï¼
.ææ¶é«¦çææ¯æå¨å´è¾¹ï¼è¿ä¸å¦æè¿æ¶çææ¯è®°å¨å¿éï¼
.C++ä¸ä» ä» æ¯æ¯æé¢å对象çç¨åºè®¾è®¡è¯è¨ï¼
.å¦ä¹ ç¼ç¨æ好çæ¹æ³ä¹ä¸å°±æ¯é 读æºä»£ç ï¼
.å¨ä»»ä½æ¶å»é½ä¸è¦è®¤ä¸ºèªå·±æä¸ç书已ç»è¶³å¤äºï¼
.请é 读ãThe Standard C++ Bibleã(ä¸æçï¼æ åC++å®å ¸)ï¼ææ¡C++æ åï¼
.çå¾æç书ï¼è¯·ä»ç»çï¼çä¸æç书ï¼è¯·ç¡¬ç头ç®çï¼
.å«ææç第ä¸é书就è½è®°ä½åææ¡ä»ä¹ââ请ç第äºéã第ä¸éï¼
.请çãEffective C++ãåãMore Effective C++ã以åãExceptional C++ãï¼
.ä¸è¦åçå¨éæå¼åç¯å¢çæ篮ä¸ï¼è¦å¦ä¼æ§å¶éæå¼åç¯å¢ï¼è¿è¦å¦ä¼ç¨å½ä»¤è¡æ¹å¼å¤çç¨åºï¼
.åå«äººä¸èµ·è®¨è®ºææä¹çC++ç¥è¯ç¹ï¼èä¸æ¯äºåµXXè¡ä¸è¡æè YYä¸ZZåªä¸ªå¥½ï¼
.请çãç¨åºè®¾è®¡å®è·µãï¼å¹¶ä¸¥æ ¼çæç §å ¶è¦æ±å»åï¼
.ä¸è¦å 为CåC++ä¸æä¸äºè¯æ³åå ³é®åçä¸å»ç¸åï¼å°±è®¤ä¸ºå®ä»¬çæä¹åä½ç¨å®å ¨ä¸æ ·ï¼
.C++ç»ä¸æ¯æè°çCçâæ©å âââå¦æC++ä¸å¼å§å°±èµ·åå«Zè¯è¨ï¼ä½ ä¸å®ä¸ä¼æCåZè¯è¨èç³»å¾é£ä¹ç´§å¯ï¼
.请ä¸è¦è®¤ä¸ºå¦è¿XXè¯è¨åæ¹å¦C++ä¼æä»ä¹é®é¢ââä½ åªä¸è¿åå¨å¦ä¸é¨å ¨æ°çè¯è¨èå·²ï¼
.读å®äºãInside The C++ Object Modelã以ååæ¥è®¤å®èªå·±æ¯ä¸æ¯å·²ç»å¦ä¼äºC++ï¼
.å¦ä¹ ç¼ç¨çç§è¯æ¯ï¼ç¼ç¨ï¼ç¼ç¨ï¼åç¼ç¨ï¼
.请çæä¸å书ç±ï¼ãC++é¢å对象é«æç¼ç¨ï¼C++ Effective Object-Oriented Software Constructionï¼ããé¢å对象软件æé (Object-Oriented Software Construction)ãã设计模å¼ï¼Design Patternsï¼ããThe Art of Computer Programmingãï¼
.è®°ä½ï¼é¢å对象ææ¯ä¸åªæ¯C++ä¸æçï¼
.请æ书ä¸çç¨åºä¾å亲æè¾å ¥å°çµèä¸å®è·µï¼å³ä½¿é å¥å çä¸ææºä»£ç ï¼
.æå¨ä¹¦ä¸çå°çææä¹çä¾åæ©å ï¼
.请éè§C++ä¸çå¼å¸¸å¤çææ¯ï¼å¹¶å°å ¶åå®çè¿ç¨å°èªå·±çç¨åºä¸ï¼
.ç»å¸¸å顾èªå·±ä»¥ååè¿çç¨åºï¼å¹¶å°è¯éåï¼æèªå·±å¦å°çæ°ç¥è¯è¿ç¨è¿å»ï¼
.ä¸è¦æ¼æ书ä¸ä»»ä½ä¸ä¸ªç»ä¹ é¢ââè¯·å ¨é¨åå®å¹¶è®°å½ä¸è§£é¢æè·¯ï¼
.C++è¯è¨åC++çéæå¼åç¯å¢è¦åæ¶å¦ä¹ åææ¡ï¼
.æ¢ç¶å³å®äºå¦C++,就请åæå¦ä¸å»ï¼å 为å¦ä¹ ç¨åºè®¾è®¡è¯è¨çç®çæ¯ææ¡ç¨åºè®¾è®¡ææ¯ï¼èç¨åºè®¾è®¡ææ¯æ¯è·¨è¯è¨çï¼
.就让C++è¯è¨çåç§å¹³å°åå¼åç¯å¢å»æ¿ççç«äºå§ï¼æ们è¦ä»¥å¦ä¹ C++è¯è¨æ¬èº«ä¸ºä¸»ï¼
.å½ä½ åC++ç¨åºåå°ä¸åå´åç°èªå·±ç¨çæ¹æ³å¾æå£æ¶ï¼è¯·ä¸è¦é©¬ä¸åæï¼è¯·å°½å¿«å°ä½ä¸çé¨åç²ç¥çå®æ以ä¿è¯è¿ä¸ªè®¾è®¡çå®æ´æ§ï¼ç¶ååæèªå·±çé误并éæ°è®¾è®¡åç¼åï¼åè§ï¼ï¼
.å«å¿æ¥ï¼è®¾è®¡C++çclassç¡®å®ä¸å®¹æï¼èªå·±ç¨åºä¸çclassåèªå·±çclass设计水平æ¯å¨ä¸æçç¼ç¨å®è·µä¸å®åååå±çï¼
.å³ä¸è¦å 为ç¨åºâå¾å°âå°±ä¸éµå¾ªæäºä½ ä¸çç»çè§åââå¥½ä¹ æ¯æ¯å¹å »åºæ¥çï¼èä¸æ¯ä¸æ¬¡è®°ä½çï¼
.æ¯å¦å°ä¸ä¸ªC++é¾ç¹çæ¶åï¼å°è¯ç对å«äººè®²è§£è¿ä¸ªç¥è¯ç¹å¹¶è®©ä»ç解ââä½ è½è®²æ¸ æ¥æ说æä½ ççç解äºï¼
.è®°å½ä¸å¨åå«äººäº¤æµæ¶åç°çèªå·±å¿½è§æä¸ç解çç¥è¯ç¹ï¼
.请ä¸æç对èªå·±åçç¨åºæåºæ´é«çè¦æ±,åªæä½ çç¨åºçæ¬å·ä¼åæVersion .XXï¼
.ä¿åå¥½ä½ åè¿çææçç¨åºââé£æ¯ä½ æ好ç积累ä¹ä¸ï¼
.请ä¸è¦åæµ®èºç人ï¼
.请çç±C++!
如何从源码编译OpenCV4Android库
本文介绍如何从源码编译OpenCV4Android库,解决实际应用中遇到的源码问题。
通常,源码Android平台已有官方提供的源码老绵羊管家源码OpenCV库,但实际应用中可能会遇到无法同时使用SNPE(高性能神经网络加速库)和OpenCV的源码问题,因为SNPE使用的源码STL链接的是libc++,而OpenCV默认使用的源码是gnu_stl,这会导致gradle配置无法正常编译。源码
为解决此问题,源码需要自行编译OpenCV4Android库,源码可选择在Linux下基于NDK编译,源码贷齐乐源码或在Windows中使用MinGW编译。源码本文选择前者,源码便于生成Docker镜像,源码方便部署。源码
对于已经配置好的加仓ea源码编译镜像,可通过Docker命令启动,并设置环境变量。若需修改NDK或SDK版本,同样更新环境变量。然后进入目录开始编译,直销网站源码修改编译选项。
若从头开始搭建编译环境,首先生成基于Ubuntu.的Docker基础容器,安装基础工具,如vim、同步安卓源码ant或gradle。安装与配置Cmake,确保版本为3.6或以上,以支持HTTPS,避免编译过程中的文件下载失败。安装JDK和Android SDK,并配置环境变量。
下载OpenCV源码和contrib库,选择合适的分支以避免编译错误。编译过程可使用指定配置文件ndk-.config.py,选择需要编译的指令集、STL库等。
完成编译后,即可得到OpenCV-Android-SDK库,适用于Android Studio中的Java或C++接口使用,提供方便的计算机视觉功能。