小红帽中用eclipse编译windows程序遇到的问题处理备忘录
1.size_t无符号整型变量,size_t has not been declared 解决办法加头文件stddef.h
2.expected initializer befor 'a'
当头文件无法完成预处理的时候,就会报这个错误
http://blog.csdn.net/bbplayers/article/details/6457364
没有初始化?将头文件中的导出库宏定义注释掉即可,gcc不需要dllexport
3.__int64 has not been declared
__int64 vc特有的8字节64位有符号整型变量
通过typedef long long int __int64;解决,这里注意这不是宏,所以要加;号
如果其他头文件也需要可以定义ifndef来解决
http://bbs.csdn.net/topics/310135464
http://blog.csdn.net/luxuejuncarl/article/details/1568457
加头文件stdlib、stddef、stdint都没有用
注意long int是32位的
《C和指针》中写过:
long与int:标准只规定long不小于int的长度,int不小于short的长度.
http://bbs.chinaunix.net/thread-1877405-1-1.html
4.纯虚函数定义格式如下
纯虚函数是一种特殊的虚函数,它的一般格式如下:class <类名>{virtual <类型><函数名>(<参数表>)=0;…};
在许多情况下,在基类中不能对虚函数给出有意义有实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。
为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;),则编译器要求在派生类中必须予以重载以实现多态性。同时含有纯虚拟函数的类称为抽象类,它不能生成对象。
http://bbs.bccn.net/thread-361400-1-1.html
http://blog.csdn.net/tonywearme/article/details/6979283
1、多态性指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。a.编译时多态性:通过重载函数实现b 运行时多态性:通过虚函数实现。2、虚函数虚函数是在基类中被声明为virtual,并在派生类中重新定义的成员函数,可实现成员函数的动态重载3、抽象类包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象
群里网友推介一个非常好的免费自学C++的网站,http://www.cppcourse.com/freelist
加油!三个月时间可以做很多事情,相信你可以的!和考研一样!努力!抵得住诱惑耐得住寂寞!规划好,两期!
抽象类不能定义对象,但是抽象类可以定义指针,指针指向派生类
抽象类中定义的指针只能访问纯虚函数和虚函数,其他函数没有访问权限!
Never call virtual functions during construction or destruction:
http://www.cnblogs.com/Pony279/archive/2013/06/04/3117955.html
看到两篇讲虚函数的文章:
http://bbs.bccn.net/thread-361400-1-1.html
http://blog.csdn.net/tonywearme/article/details/6979283
4.Linux下Eclipse编译时,报recompile with -fPIC错误:
http://blog.csdn.net/shenchen8274/article/details/7822822
-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),
则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意
位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。
不用fPIC编译so并不总是不好.
如果你满足以下4个需求/条件:
1.该库可能需要经常更新
2.该库需要非常高的效率(尤其是有很多全局量的使用时)
3.该库并不很大.http://blog.sina.com.cn/s/blog_54f82cc201011op1.html
4.该库基本不需要被多个应用程序共享
http://blog.sina.com.cn/s/blog_54f82cc201011op1.html(正解)
http://blog.csdn.net/bailyzheng/article/details/17613435
http://zhidao.baidu.com/link?url=EYPglPT3EHm1cPvPdaeFGJthgWEze1ZNFQH6erZzZI59uZCAbFEmaKelrQI1fEWjg7uQOnqD-UpucyEkFwTa6a
-f后面跟一些编译选项,PIC是其中一种,表示生成位置无关代码(Position Independent Code)
5.abs(),fabs()函数
template <class T>
inline T& abs(T& a)
{
return a < 0 ? -a : a;
}模板形式的函数自定义
abs();查看了一下gcc的库函数位于stdlib.h(http://blog.163.com/ywx209100@126/blog/static/362968912009814105614924/):
extern int abs(int _x)_THROW _attribute_ ((_const_))_wur;
_THROW为throw()函数的宏定义。_wur是/*ingnore*/的宏定义
throw()是异常直接中断,不会理会外部捕获函数,throw(int)只会捕获int型的异常,http://blog.csdn.net/eclipser1987/article/details/7997286
http://blog.csdn.net/zdl1016/article/details/4204025
vc++中abs()针对整型变量,fabs针对浮点型变量,查看源windows程序参数定义类型为double,故改用fabs(),这个函数在math.h中。
6在C++里Include C的头文件,就需要在原来的.h文件前加个c,并去掉.h;c++头文件include <cstdlib>对应c中的include <stdlib.h>头文件。
string.h cstring.h <string>
http://www.cnblogs.com/Cmpl/archive/2012/01/01/2309710.html
头文件string与string.h的区别
<string>是c++ 的头文件,其内包含了一个string类,string s1就是建立一个string类的对象
<string.h> 的c语言的东西 并无类,所以不能 string s1
<cstring>文件实际上只是在一个命名空间std中include了 <string.h>;以前的C的头文件转化为C++的头文件后,有时加上c的前缀表示来自于c,例如cmath就是由math.h变来的。
更加一般的是:
当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用< iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。命名空间std封装的是标准程序库的名称
提示找不到标识符memset,那么少了sting.h,但是<string>要同时使用,因为使用到了string类所以两个头文件必须加,但是<cstring>的话必须使用using namespace std;
另外补充一点的是:“”和<>什么时候用:
""首先搜索当前目录,当前目录没有,再搜索头文件的标准目录. <>只搜索头文件的标准目录
7
C++标准库没有提供针对 string 对象的 tolower 函数,
标准库的 tolower 函数是针对单个字符而非针对 string 的,c++者中有一个函数tolower。这个函数是处理字符串的函数。将大写转换成小写.大写是指ABCDEFGHIJKLMNOPQRSTUVMXYZ转换后变成abcdefghijklmnopqrstuvwxyz。非字母字符不做出处理。比如1 2 3 !等字符是以原字符输出的头文件:在VC6.0可以是ctype.h或者stdlib.h。当然这个函数用法有点特殊他是处理字符的,而不是处理字符串的。所谓的不能处理字符串不是说他不能处理字符串,他处理的时候对字符串必须是一个一个字符处理的,不能一次性对字符串进行处理
重载一个函数
1
2
3
4
5
6
|
std::string tolower ( std::string str )
{
for (unsigned i = 0; i < str.length(); i++)
str[i] = std:: tolower (str[i]);
return str;
}
|
8函数名加括号是为了防止宏扩展http://blog.csdn.net/simonjay2007/article/details/7406795
函数返回值可以是一个函数对象http://www.douban.com/group/topic/13717915/?cid=154376451(还是不太理解函数参数的问题?),闭包形式:http://baike.baidu.com/link?url=Vz7YSkauS_2z0JuM7vBsZOYDrGdB-Ws5XSAYO-BeHryuNKvzNB5QaUjIAJIsAfapORqsCfEJ-kqSGcTXthMAAK
“transform(s.begin(),s.end(),s.begin(),tolower)” can't be complied successfully?
9.移植时,一定要格外注意大小写,linux下是有严格要求的。.否则头文件可能找不到。
小红帽中用eclipse编译windows程序遇到的问题处理备忘录相关推荐
- Mingw-W64编译Windows程序提示:undefined reference to `__imp_GetStockObject' 的解决方法
gcc(Mingw-W64)编译windows程序,提示undefined reference to `__imp_GetStockObject' 的解决方法:加上-mwindows,问题解决. #i ...
- 一步步通过命令行cl.exe编译Windows程序
Windows系统下有强大的IDE工具VS,VC6.0等,隐藏了很多编译和链接的细节. 事实上,VS是通过调用cl.exe进行源代码编译.接着调用link.exe进行目标文件的链接等操作 ...
- Linux错误27,解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”...
centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件. 安装 ...
- 在windows程序中嵌入Lua脚本引擎--使用VS IDE编译Luajit脚本引擎
前些天听到一个需求:某业务方需要我们帮忙清理用户电脑上的一些废弃文件.同事完成这个逻辑的方案便是在我们程序中加入了一个很"独立"的业务逻辑:检索和删除某个程序产生的废弃文件.试想, ...
- 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台运行的控制台应用程序类型 | 编译 Windows 平台运行的 Android 逆向程序 )
文章目录 一.Windows 平台运行的控制台应用程序类型 二.编译 Windows 平台运行的 Android 逆向程序 一.Windows 平台运行的控制台应用程序类型 hacktool 工程的类 ...
- 用Reflector和FileDisassembler配合反编译.net Windows程序
用FileDisassembler反编译Windows Application出现了问题,resx资源文件和cs文件不匹配,项目编译根本通不过,把resx文件修改放入cs文件夹后,虽然运行没有 问题, ...
- windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法
按此文章<Hadoop集群(第7期)_Eclipse开发环境设置>进行MapReduce开发环境搭建的过程中遇到一些问题,饶了一些弯路,解决办法记录在此: 文档目的: 记录windows环 ...
- Jenkins系列:5、wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe
Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe 文章目录 Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成e ...
- 【开发环境】Windows 系统中使用 Makefile 构建脚本编译 C 程序 ( 下载并安装 TDM-GCC 编译器 | 配置环境变量 | 编译 Makefile 程序 )
文章目录 一.下载 TDM-GCC 编译器 二.安装 TDM-GCC 编译器 三.配置环境变量 四.根据 Makefile 脚本编译 C 程序 一.下载 TDM-GCC 编译器 下载并安装 TDM-G ...
最新文章
- 良心贴!没想到 Google 排名第一的编程语言,可以这么简单!
- 关于react中setState的深入理解
- Django--models一对多实例
- 关于Unity实现AR功能(四)设置相机的对焦
- Android中的消息机制
- 禅道开源版用户手册_自动化建模 | H2O开源工具介绍
- Qt/Qte/Qtopia三者的区别
- C4996 'fopen': This function or variable may be unsafe
- (王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题
- zookeeper中展示所有节点_zookeeper工作原理与节点使用
- vue中echarts迁徙图
- 世界上最简单的会计书(先进先出法VS后进先出法)
- Java初学者日志_05
- 详解pandas编码函数pd.factorize()
- Tomcat 服务器配置实现 IP访问限制
- 中国工程师如何获 Google 的工作机会?
- tick timer 间隔_adjtimex修改tick值用法举例
- CentOS8_CA
- 百度飞桨蜜度文本智能较对大赛经验分享(17/685)
- 无线服务器插电跳闸,家里的插座有一个一插电就跳闸,一插电就跳闸,没有短路,不知道怎么回事...
热门文章
- Variable Generator/dense/kernel already exists, disallowed.
- NLP-阅读理解:“阅读理解”综述(Machine Reading Comprehension, MRC)【完形填空、多项选择、抽取式(答案片段抽取)、生成式(自由作答)】《机器阅读理解数据集》
- html5仿苹果通讯录效果,iOS 仿通讯录索引
- 什么是云连接?云学院带你了解华为云连接知识
- 分销小程序定制开发|分销系统开发对商家有哪些好处?
- 虚拟服务器 dmz区别,dmz主机和虚拟服务器区别(tp路由器虚拟服务器能干嘛)...
- HDU 5976 Detachment 逆元
- 内核编译出错 [arch/arm/boot/compressed/piggy.lzo] Error 1
- 两个PDF比较标出差异_PDF最全接触
- Arm芯片上电启动流程剖解