在XCODE中编写了一个xcode 头文件搜索路径和一个CPP文件,如何放入main.cpp中

汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
Treasure every day and love the world in my own way.
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
&&&&笔者属于Mac小白,最近刚入手一台macbook air,一直没有时间搭建编程环境,这两天终于挤出时间开始使用Mac系统。目前的编程工具主要为eclipse以及xcode,笔者首先选择了使用xcode,由于本人长期使用C++从事图像处理方面的工作,所以安装opencv就成了编程开始前的第一步。系统环境:ML10.8.2XCode版本:4.5.2&OpenCV版本:2.4.3Eclipse版本:Juno Service Release 1&在这里特别提醒大家:&&& opencv中文官方网站介绍的“opencv在Mac OS系统下的安装方法”已经严重过期,我已经试过了,失败,而且这个方法不是opencv for mac的,而是opencv for IOS的,希望大家不要再走弯路尝试了。&& & 为了方便刚刚接触mac的朋友,我在这里首先说明下opencv在mac下的形式。主要有两种:1. OpenCV for Mac& 2. OpenCV for IOS 其中IOS的版本是为了让你的opencv使用在iphone或者ipad项目中的,即是给编写跑在IOS系统中的程序用的。而MAC的版本是给编写跑在MAC系统中的程序用的,这点非常重要,大家一定要根据自己的需求,而下载对应的版本。笔者就是因为开始弄不清楚这两个版本的区别而走了很多的弯路,现在和大家分享,希望有所帮助。下面附上opencv官方网站的两个版本的下载链接:目前的版本为2.4.3&好了,下面进入正题,笔者首先介绍OpenCV for Mac,即编写在mac系统上可以运行的C++程序。一、安装OpenCV for MAC&1.&&&& 首先下载opencv for mac安装源文件,解压缩2.&&&& 安装cmake程序。笔者使用的是Homebrew,在终端中输入:“brew install cmake”,自动安装cmake。3.&&&& 进入存放解压后的opencv文件夹,新建一个空的文件夹release,进入该文件夹,编译安装opencv,使用命令如下:& & & &mkdir release& & & &cd release& & & &cmake -G "Unix Makefiles" ..& & & &make& & & &sudo make install4. & & 安装好的lib文件存放在“/usr/local/lib”文件夹,h文件存放在“/usr/local/include”。& & & &至此,opencv for Mac 安装完毕,参考的网址如下:& & & && & & &&二、在MAC下使用OpenCV1.&新建DisplayImage.cpp文件,代码如下#include &cv.h&#include &highgui.h&int main( int argc, char** argv ){& M& image = imread( argv[1], 1 );&& if( argc != 2 || !image.data )&&& {&&&&& printf( "No image data \n" );&&&&& return -1;&&& }&& namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );& imshow( "Display Image", image );&& waitKey(0);&& return 0;}&2.&新建CMakeLists.txt文件,代码如下:& &project( DisplayImage )&& find_package( OpenCV REQUIRED )&& add_executable( DisplayImage DisplayImage )& &target_link_libraries( DisplayImage ${OpenCV_LIBS} )&3.&编译两个文件& &cd &DisplayImage_directory&&& cmake .& &make4.&运行编译好的结果./DisplayImage lena.jpg&三、在XCode中使用OpenCV1. 创建一个空的command line工程。2. 在main.cpp中粘贴以下代码:////& main.cpp//& FbyCharacterNormalization////& Created by Boyuan Feng on 13-1-24.//& Copyright (c) 2013年 Boyuan Feng. All rights reserved.//&#include &iostream&#include &opencv2/opencv.hpp&#include &opencv2/highgui/highgui.hpp&#include &opencv/cvaux.hpp&#include &fstream&&#define BYTE unsigned char&int main(int argc, const char * argv[]){&&& // insert code here...#if 1&&& //get the image from the directed path&&&&&&&&&& IplImage* img = cvLoadImage("/Users/boyuanfeng/aaa.bmp", 1);&&&&&&&&&& //NSLog(img);&&&&&&&&&& //create a window to display the image&&&&&&&&&& cvNamedWindow("picture", 1);&&&&&&&&&& //show the image in the window&&&&&&&&&& cvShowImage("picture", img);&&&&&&&&&& //wait for the user to hit a key&&&&&&&&&& cvWaitKey(0);&&&&&&&&&& //delete the image and window&&&&&&&&&& cvReleaseImage(&img);&&&&&&&&&& cvDestroyWindow("picture");#endif&&&&&&&&&& //return&&&&&&&&&& return 0;}&3. 添加lib文件:右键点击工程名,选择“Add files to..”,在文件选择对话框弹出来时输入“/”,在弹出的路径框中输入:/usr/local/lib,全选该文件夹下的全部dylib文件,添加至工程。5. 添加lib文件查找支持: 点击工程名文件,进入“Build Settings”选项卡,在“Library Search Paths”栏中输入“/usr/local/lib”6. 添加头文件:点击工程名文件,进入“Build Settings”选项卡,在“Header Search Paths”栏中输入:“/usr/local/include& &/usr/local/include/opencv”7. 编译运行整个工程,运行成功~~四、在Eclipse中使用OpenCV1. 按照正常的步骤,使用eclipse建立一个Mac C++工程,包含一个cpp文件,代码如xcode中的代码相同即可。2. 右击工程名, 选择“Properties”,在属性配置页中选择,点击C/C++ Build, 在下拉选项中选择&Settings. 在右边的选项卡中选择&Tool Settings。3. 在GCC C++ Compiler选项列表中选择Includes,在Include paths(-l)中添加安装好的opencv的头文件存放目录:/usr/local/include/4.&在MacOS X C++Linker选项列表中选择Library,在Library search path (-L)中添加安装好的opencv Lib文件存放目录:/usr/local/lib/5.&在MacOS X C++Linker选项列表中选择Library, 在Libraries(-l)&中依次点击“+”号,添加需要使用的Lib文件(通常情况下,使用前三个):opencv_core opencv_imgproc opencv_highgui opencv_ml opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_contrib opencv_legacy opencv_flann6. 重新build all工程,大功告成~~*^_^*
阅读(11243)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'(转)在Mac下使用OpenCV, 在Xcode下使用OpenCV (非常基础,详细)',
blogAbstract:'转自:/home.php?COLLCC=&COLLCC=&mod=space&uid=702148&do=blog&quickforward=1&id=%E5%9C%A8Mac%E4%B8%8B%E4%BD%BF%E7%94%A8OpenCV%EF%BC%8C%20%E5%9C%A8Xcode%E4%B8%8B%E4%BD%BF%E7%94%A8OpenCV',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:9,
permalink:'blog/static/',
commentCount:4,
mainCommentCount:3,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'Treasure every day and love the world in my own way.',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}在XCODE中编写了一个头文件和一个CPP文件,如何放入main.cpp中-中国学网-中国IT综合门户网站
> 在XCODE中编写了一个头文件和一个CPP文件,如何放入main.cpp中
在XCODE中编写了一个头文件和一个CPP文件,如何放入main.cpp中
转载 编辑:李强
为了帮助网友解决“在XCODE中编写了一个头文件和一个CP”相关的问题,中国学网通过互联网对“在XCODE中编写了一个头文件和一个CP”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:在XCODE中编写了一个头文件和一个CPP文件,如何放入main.cpp中,具体解决方案如下:解决方案1:<通过对数据库的索引,我们还为您准备了:.h的呢是头文件 就是说我们所有的函数 和变量在那里面定义的 .cpp的呢就是源文件 是... 在class.cpp中就可以了具体的指定函数做具体的事, 当然你得包含class.h这个头文件 ...===========================================编辑的时候源码是.CPP扩展名,C++头文件是.H扩展名 编译源程序文件转换成.obj扩展名的目标文件 链接将一个或多个目标文件与程序用到的库文件链拉起来,形成一个可以在...===========================================CP_VC6++ 定义了CP_VC6++, 可能说,这是C程序 (C Program), 适用于 VC++ 编译器... "下面还没用到"-- 下面的头文件里或程序里可能会用,当然不用也可以,就像多声明一个变...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助等 级:版主
威 望:248
帖 子:20772
专家分:40060
&&得分:20&
接近对,但不全对。
授人以渔,不授人以鱼。
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
马马虎虎 不吝赐教 我是路过蹭分滴
等 级:新手上路
回复 2楼 TonyDeng
来 自:北京
等 级:论坛游侠
帖 子:128
专家分:169
回复 2楼 TonyDeng
版主劳驾,能否告知哪里有问题?认真请教
等 级:版主
威 望:248
帖 子:20772
专家分:40060
回复 5楼 核晴核理
头.h文件的使用,并非纯粹是为了分类管理代码,而是C/C++语言本身对声明的要求。C/C++程序往往需要很多全局性的声明,比如数据结构、常量和函数,特别是函数,因为C语言没有函数中嵌套函数的语法,所以任何函数都是全局性的,至少也是模块级别的。当程序由多个模块构成的时候,对同一个函数,即使多个模块都调用这个函数,链接器也只需要一份该函数的实现代码,不需要每个模块都重复该代码,但实际上又不是每个模块都使用全部所有的函数,总是各有所需,不过偶有交叉而已,这个时候,C语言就规定调用者只要事先声明需要使用某个函数,那么编译器就视此函数在这个模块中可见,若不声明,即不可见,这是代码隐藏思想的原始技术(C++用类封装来解决这个问题)。
因此,比如malloc()函数,你有甲乙丙三个模块,只有甲和乙模块使用到malloc()函数,丙不需要,那么你就在甲和乙模块前写上malloc()函数的原型,表示将会使用这个函数,那么编译器就会到.LIB代码库中检索出实现代码,链接到程序的可执行文件中,而假如丙模块没有这样的声明,但实际上又用到了malloc()函数,那么编译器就会发出警告,说你的代码没有声明就使用函数,到底是怎么回事。
事实上,你完全可以在丙模块中编写一个也命名为malloc()的函数,覆盖掉语言库中提供的函数,与甲、乙的malloc()函数是同名但不同质,甚至三个模块分别有三个不同版本的malloc()函数,都是可以的。这其实就是C++类的原始实现,每个模块相对独立为一个类。
假如很多模块都使用同样的某个函数,但在这些模块中反复书写这个函数的原型,也是比较烦人的,所以C语言使用一个叫.h的文件,把相关函数一次写好,使用到这些函数的模块,只要#include这个头,就等于把这些函数原型抄到模块中了。记住:#include预处理指令只是把相关文件的代码嵌入到当前模块。.h只是为了节省键入代码成本和书写不一致而使用的技巧概念,C#和Java都不使用.h头文件,C++只是为了兼容C而不得不继续支持,但实际上在C++程序中已经很少需要#include头文件了,多改用namespace命名空间替代。
在C/C++中,只要有两个函数的命名和参数列表完全一样,就被视为同一个函数的实现,链接器必定报错,不管你是否使用了.h文件。初学者常见的_main()函数重复被发现,就是这个原因,因为他写了多个模块都使用了相同的函数main(),那是完全一样的,不包括任何.h头也会报错。
授人以渔,不授人以鱼。
版权所有,并保留所有权利。
Powered by , Processed in 0.026017 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reservedvs2012下编译别人的项目时,明明有头文件且xxx.cpp中包含的头文件,却还提示xxx是未标识符,error C2065 - CSDN博客
一大早起来,从网上下载了一个cocos2d-x游戏--三消类游戏Sushi Crush源码,看到网上运行效果的截图,觉得这源码很有学习的必要。
于是,我就用vs2012打开win32下的sln,编译却提示“c:\users\end\desktop\sushicrush-master\classes\play-layer.cpp(22): error& C2065: “m_srcSushi”: 未声明的标识符”等等未标明的错误。我擦,明明在playlayer.cpp中都包含了
playlayer.h,而且player.h中的类PlayLayer都有变量m_srcSushi等等,这就很郁闷。上网找了资料,都没有解决这个问题。于是乎自己就开始分析错误原因了,如下。
vs2012提示未声明的标识符,就说明#include&player.h&的内容没有包含进来,可是player.h都在啊?这就奇怪了。后来发现,原作者是在xcode下写代码的,我想会不会是文本的&#26684;式问题导致VS2012无法识别player.h的内容。好,就假设是这个原因造成的,于是我就把player.h的内容复制到一个txt中,这是为了把&#26684;式去掉,然后把原player.h删除,再新建一个player.h,把txt的内容复制到新的player.h中。好的,如果再次编译时,没有提示m_srcSushi等未标明的错误,就证明上面的假设是成立的。我再次点击了编译,等待了几秒。果然这次没有提示m_srcSushi等未标明的错误,证明了以上错误是不同IDE的文本&#26684;式造成的。
可是这个问题解决了,又提示“xxx 是未标明的变量”,我用查找功能,在整个项目中都没有找到xxx变量。我擦,明明没有xxx变量,你还提示xxx是未标明,甚是郁闷。好的,再次分析原因,有了上面的解决方法,我首先想到又可能是文本的&#26684;式照成的,于是照样画葫芦,再次编译,问题解决了。整个项目可运行了。
此时,看看时间,发现这个问题搞两个半小时了,我擦。
最后做一个总结。如果一个项目在两个不同的IDE中编写代码时,提示xxx是未标识符,可是与xxx相关的头文件都在相关的cpp中,此错误可能是不同的IDE文本&#26684;式造成的。解决方法是,首先去除与xxx有关的文件的&#26684;式,使它变成ASCCI&#26684;式,复制内容到别处。然后删除原与xxx相关的文件。最后新建与删除同名的文件,把去除&#26684;式后的内容复制到各新文件中。

我要回帖

更多关于 xcode 头文件搜索路径 的文章

 

随机推荐