一、MDK编译错误
1、error: #235: variable “epos_msg” was declared with a never-completed type
这个错误的意思是epos_msg这个变量被一个“没有被完成的的类型”定义,原因是系统找不到这个类型——一般为用户定义的结构体,用户可能把这个自定义结构体放到了头文件,但这个头文件没有被C文件编译时包含。
二、Visual Studio 2017 编译错误
1、 LNK2019:无法解析的外部符号
自己使用Visual Studio建立了一个C工程,导入了一些C文件和头文件,但是再main函数掉用的时候,总是显示这个错误,检查了很多遍,确认头文件和C文件编写正确,而且都添加到工程中了,但仍然报错。最终索性将对应的C文件和头文件移出工程,再新建两个同名文件,将原内容复制进去,问题解决。。。。
2、/Ox”和“/RTC1”命令行选项不兼容
使用O2优化可较为明显地提高Visual Studio编译出来的速度,但它和运行时检查 RTC不兼容,解决办法在“属性->C/C+±>代码生成”中将“基本运行时检查”的值改为默认。
三、AndroidStudio编译错误
1、javah执行错误:“错误: 编码GBK的不可映射字符 ”
这个是和源码文件编码方式有关,在javah.exe后添加参数 -encoding UTF-8 可解决
2、JNI编译错误:error adding symbols: File in wrong format
这个错误的原因是引用的第三方的.so文件到Android工程中,而且是放到jniLibs的arm64-v8a文件夹下,但该.so是按照armeabi-v7架构编译的,故NDK编译的时候不识别对应的格式,故只能将该.so文件放到armeabi-v7文件夹下,且按照该架构编译。
四、OpenCV编译错误
1、error: use of undeclared identifier 'CV_RGB’
原因在于OpenCV2和OpenCV3的头文件不完全一样,对于这个宏定义其位置不同,故需使用OpenCV2版本的头文件
五、C++编译错误
1、error: non-constant-expression cannot be narrowed from type ‘int’ to ‘unsigned int’ in initializer list [-Wc++11-narrowing]
这个时C++11的新特性,禁止以列表形式初始化时将高精度类型转为低精度类型,换老版本的编译器可解决问题。