QT代码编写及程序移植遇到的一些问题


前言

老板让把matlab的程序移植到QT中,程序主要是信号处理方面,像FFT和IFFT、FFTSHIFT这些的函数。下面总结一下遇到的问题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、QT环境搭建

1.

编译器选择msvc2013,32位,安装完成之后需要对环境变量进行配置,要不然会出现找不到工具的情况,而且这个版本的SDK和编译器还需要单独安装,也就是需要安装WDK,msvc2013对应的WDK版本为8.1,找到资源下载就行,对环境变量的配置可以在C盘programfiles中的VS文件夹里找到VC文件夹中的vcvarsall.bat,和VC文件夹下bin中的vcvars32.bat文件,在cmd中运行即可。

2.

QT使用的是5.5.1版本,32位,这个版本下载的时候需要选择编译器的版本,选择与编译器对应的版本和位数,这里选择msvc2013x86版的。编译完成之后还需要对环境变量进行添加,环境变量添加QT安装目录下面msvc下bin文件夹,以及QT下Tools–>QTCreator–>bin文件夹。

3.

QT环境配置好后打开工程,如果已有现成工程只需要对.pro文件进行修改,注意配置中添加的路径,还有就是.lib文件的位数,编译器用32位对应的lib也要用32位。debug和release要用的库区分开。

4. 编译Qwt

对源码进行编译可以使用QT直接进行,更方便,打开源码中的工程直接release就行,将编译好的lib、dll文件等正确添加到路径就行。
另外还可以使用qmake、nmake在命令行下面进行编译。

二、程序移植

1.

将matlab移植到c++,使用armadillo库,虽然慢一点,但是语法更加接近与matlab,除了保留数据精度外,计算结果与matlab一致。配置方法在网上已经有了,不多说。
由于使用的mscv2013并不能很好地支持c++11,所以armadillo需要使用源码版本9.9以前的,否则编译器编译不通过,会提示需要更新的编译器。

2.

有些函数在armadillo中没有,就只能自己编写了,可以查看matlab中的源码进行重构。在程序中,对一个长880的序列进行fftshift报错,提示维度超出计算能力,只能用笨办法进行重写,重写出的结果运行没有问题。

代码如下(示例):

三、一些软件技巧

1. Dependency Walker

用于查看依赖,例如将打包好的exe文件拖放进去可以自动出现使用到的dll文件的相关信息以及位数。

2. dumpbin

cmd下的一个指令,和上面的类似,可以用于查看lib文件的相关信息,例如

dumpbin /headers libfftw3f-3.dll

总结

之前没怎么接触过这些东西,都是蜻蜓点水,代码还是停留在CV大法,老师的操作让我惊讶,还要学习的东西很多,任重道远。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值