我的C++程序遇到的错误---纯属个人笔记

这篇文章记载学习工作中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'

错误原因:

           在编译的过程中没能连接到fftw的库文件。

解决:

           添加“-lfftw3 -lfftw3f”,(注意fftw3表示精度为double,fftw3f表示精度为float

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-thread

5、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/




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值