这篇文章记载学习工作中C++程序遇到的错误、错误原因、解决方案等。属于没遇见一个新的错误更新本文一次。纯属个人笔记
1、expected initializer before ‘namespace’
在头文件中声明函数,在cc文件中定义及使用,一不小心出现如下错误:
In file included from /home/abing/software/lte_ul_rs_generator.cc:24:0:
/usr/include/c++/4.6/iostream:43:1: 错误: expected initializer before ‘namespace’
这是出要的错误,同时该错误会引发如下错误:
/home/abing/software/lte_ul_rs_generator.cc: 在函数‘int main()’中:
/home/abing/software/lte_ul_rs_generator.cc:218:5: 错误: ‘cout’不是‘std’的成员
/home/abing/software/lte_ul_rs_generator.cc:224:9: 错误: ‘cout’不是‘std’的成员
/home/abing/software/lte_ul_rs_generator.cc:226:13: 错误: ‘cout’不是‘std’的成员
错误原因:
经过网上一番查找,终于发现原来是在头文件中生命函数的时候,在声明语句最后少了“;”,真的是很不小心才造成这个莫名其妙的错误。
如此解决方案就是加上“;”。问题解决。
2、double free or corruption (out)
在使用malloc 和free进行数组操作的时候因为malloc的数组大小比运行过程中实际使用的大小要小,故而出现如下错误:
*** glibc detected *** /home/abing/software/lte_ul_rs_generator: double free or corruption (out): 0x0000000001142290 ***
错误原因:
malloc分配的数组size小于程序中数组实际使用的大小,在使用malloc free过程中一定要注意,分配的大小,以及最终释放的指针一定要是malloc分配的指针,就是在程序过程中不能更改malloc分配的指针指向,
解决:
找到出错的malloc位置,更改分配大小。
3、使用fftw的错误“undefined reference ”
在使用fftw进行FFT/IFFT操作的时候遇见以下错误:
/tmp/cc180fKJ.o: In function `fft_cc(std::complex<float>*, std::complex<float>*, int)':
test.cc:(.text+0x296): undefined reference to `fftwf_malloc'
test.cc:(.text+0x2ab): undefined reference to `fftwf_malloc'
test.cc:(.text+0x2cc): undefined reference to `fftwf_plan_dft_1d'
test.cc:(.text+0x2fc): undefined reference to `fftwf_execute'
test.cc:(.text+0x328): undefined reference to `fftwf_destroy_plan'
test.cc:(.text+0x334): undefined reference to `fftwf_free'
test.cc:(.text+0x340): undefined reference to `fftwf_free'
错误原因:
解决:
4、Undefined reference to Boost Thread
使用boost库中的thread相关内容遇见错误:
/tmp/ccTWxhCT.o: In function `main':
test.cc:(.text+0x66): undefined reference to `boost::thread::join()'
test.cc:(.text+0x72): undefined reference to `boost::thread::join()'
test.cc:(.text+0x83): undefined reference to `boost::thread::~thread()'
test.cc:(.text+0x8f): undefined reference to `boost::thread::~thread()'
test.cc:(.text+0xa7): undefined reference to `boost::thread::~thread()'
test.cc:(.text+0xb8): undefined reference to `boost::thread::~thread()'
错误原因:
只知道是连接错误。
解决:
g++ test.cc -o test -L/usr/local/lib/ -lboost_thread
详情可参考:http://stackoverflow.com/questions/17455928/undefined-reference-to-boost-thread5、undefined reference to `boost::signals::connection
boost signals2使用出错:
/tmp/cckXDKC8.o: In function `main':
test.cc:(.text+0xd3): undefined reference to `boost::signals::connection::~connection()'
test.cc:(.text+0x155): undefined reference to `boost::signals::connection::~connection()'
test.cc:(.text+0x1d7): undefined reference to `boost::signals::connection::~connection()'
test.cc:(.text+0x259): undefined reference to `boost::signals::connection::~connection()'
这是连接错误:
在执行编译是使用即可:
g++ test.cc -o test.o -lboost_signals
参考:http://www.cplusplus.com/forum/general/60868/