Vegamap移植小结
来源:互联网 发布:深圳网络维护 编辑:程序博客网 时间:2024/05/21 18:40
Windowsà linux
源代码在VS环境下编写的,插件提供了create basic .pro File…的功能,可以直接使用此功能,但是生成的pro文件还有一些问题。
VS创建好的pro文件文件还需要一点修改,比如将lgdal改成lgdal_i,然后LIBS,INCLUDEPATH做一点修改。Pro文件本身比较明了,改动起来倒不是很费事。
在Linux下使用QtCreator来打修改过的Pro文件,然后编译。但程序正如预料一般——编译失败。
最先我能找到的原因是linux下Wingw编译器更加严格,某些代码在VS下能编译通过,但WinGw就会报错。
比如在类LayerManagerDock.cpp下原来我写的定义是:
LayerManagerDock(QString &title, QWidget *const parent = 0);
在vmapapp.cpp中创建其实例写的是:mlayerManagerDock = new LayerManagerDock(tr("图层管理"), this);在linux下报错“找不到合适的构造函数”。但至此还是无法编译成功。
但是接着报错是找不到-lglu,初步判定应该是opengl没有装。查看新立得,发现系统安装了freeglut3,但是freeglut3-dev还没有装,安装了freeglut3-dev,总算编译成功了。
运行程序,可以弹出主界面。但是加载shapefile后程序直接退出。经过排除,我发现是其中一个函数有一个路径没有返回值,在linux下直接死循环了!
修改以后,此时多数功能可以正常运行,但是我发现windows平台下实现的拖动选择框,在linux下就无效了。
关于QtCreator,我不得不说的是调试不够方便,而且存在乱码问题,在Encoding选项中我居然找不到utf-8!
于是想用Eclipse,这样应该方便调试,但是打开了工程后,问题又来了。——加载pro文件后,如果pro文件最后引入的pri文件,不会被加载进工程!
Linuxàwindows
主要的步骤有两个:
1. 将.pro文件中的gdal改成gdal_i;
2. 打开VS2008,打开Qt->import .pro file;
然而此时直接编译工程会出现错误。
比如definition of dllimport static data member not allowed或者类似的错误。
这个错误比较诡异。比如工程vmapcore中查看预编译头定义中确实有VMAPCORE_LIBRARY,此时我将vmapcore_global.h中的#if defined(VMAPCORE_LIBRARY) 试着改成1,然后重新编译成功,这时再将1改回来VS这次居然不报错了,真是神奇=_=
编译GUI工程时也出现类似错误,查看发现预编译头定义居然少了GUI_LIB,加上去后重新编译,成功了。这次VS报错比较正常,解释就是从pro文件转到vs文件中,定义丢失了!
小结
当从pro文件直接导入到VS中,某些配置比如生成路径以及输出路径没有被保存,还有一些头文件目前也没法保存。
从VS导出的pro文件,要在linux下使用,除了程序本身的编译问题外,用QtCreator还是相对比较容易的。
- Vegamap移植小结
- 嵌入式GUI移植小结
- sd_fat16移植方法小结
- ffmpeg移植小结
- 移植Qt_for_ARM出错小结
- Android日历移植小结
- imx6 Uboot 移植小结
- 移植Qt_for_ARM出错小结
- 64位汇编移植小结
- 64位汇编移植小结
- ARM芯片移植经验小结
- DTU嵌入式软件移植小结
- U-BOOT移植问题小结
- 64位汇编移植小结
- 开发板移植步骤小结
- android HDCP移植开发小结
- Zephyr系统移植调试小结
- lua移植到MTK平台小结
- 敢于变化,要富于冒险、创新精神
- 面影橋
- 马遍历棋盘高效算法(10*10),10*10以下的棋盘基本可以迅速计算出结果。
- 协同软件
- 通信毕业生求职
- Vegamap移植小结
- WordPress开发者文档
- 注意InnoDB的记录长度,控制Blob字段的数量
- 利用伪造内核文件来绕过IceSword的检测
- 当vim遇上C++
- 需求评审与需求测试
- 开篇之作
- Java各种排序算法实现与探讨
- MMX技术