请选择 进入手机版 | 继续访问电脑版
正在上传图片(0/1)

尝试用vs2010编译DJI_Onboard_API_Windows_QT_Sample,结果

 1
手机看帖 17 6088
1开发环境
Windows7 64位, qt 4.8.6vs2010
2 下载源码
从大疆官网下载源码:
1.png

3 使用vsqt插件打开该qt工程
2.png
4 先调试一下。
3.png
结果输出上述错误,好吧,一个一个解决错误。
5排除错误
1)解决Unistd.h头文件错误:

Unistd.hlinux系统下才有的,所以在windows是找不到的,所以要么解决方法是要么删除该头文件的引用,要么手写一个该头文件。考虑到该代码中有多出引用该unistd.h,所以为了修改方便,所以我选择手动创建一个unistd.h,内容如下
#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>

#endif /* _UNISTD_H */
2)解决sys/time.h 头文件问题。
sys/time.h 也是linux系统下才有的,在windows下无法使用,所以也要进行替换(因为该项目中主要用到了gettimeofday()函数,所以在不能使用window下的time.h替换sys/time.h)。

我手动写一个systime.h ,并在systime.cpp中实现gettimeofday()方法。
4.png
然后把项目中使用#include <sys/time.h>替换为#include <systime.h>
3)解决QSerialPortInfo错误:

QSerialPort qt5.1才开始有的,qt4.8.6中是没有的。因此需要自行下载QSerialPort,并把它放到qt对应的安装目录中去。
dll文件放到D:\qt-4.8.6\bin
5.png 6.png 7.png
接下来配置项目属性:
8.png 9.png 10.png
4)解决pthread.h 头文件错误。

下载pthreads,解压到d盘,
配置pthreads:
打开项目属性,VC++选项中,选择右侧包含目录,进行如下配置
11.png
选择库目录,进行如下配置
12.png
选择链接器下的输入,在左侧的选择依赖项中进行如下配置:
13.png
然后将D:\pthreads\Pre-built.2\dll\x64\pthreadVC2.dll复制到项目中生成的可执行文件的目录中
现在重新调试一下:
14.png
发现之前的错误没了,但又要新的错误出现,继续修改。
通过查询资料,linux sleep 单位是秒 usleep 单位是微秒, windowsSleep 单位是毫秒。
因此将代码中的sleep(2)替换为Sleep(2000)(参数*1000);
       usleep(100000) 替换为Sleep(100)(参数/1000;
接这将__func__改为__FUNCTION__

然后重新调试,结果编译通过。
15.png

问题:
我现在没打开串口,也没有连接无人机

当我点击Activation按钮时,程序就报错:
16.png 17.png
但是当我使用从官网下载的编译好exe文件时,
18.png


当我点击Activation,程序不会报错。

求助:
请问大家是哪的问题,因为公司项目开发用的是qt4.8.6+vs2010,这个是不能变的,
所以希望大家帮我看看是哪的问题。
谢谢!

QQ2685594997




10.png
评论
上传
你需要登录之后才能回帖    登录 | 注册
pigking12345   2015-9-11 2#
可以截个call stack的图么?
々&Skyさ  Mavic Air认证用户 2015-9-11 3#
我表示刚才移植了一遍,没有出现问题。除了配置外,代码里面需要修改 sleep 、gettimeofday()和__func__改为__FUNCTION__部分,还有一些头文件,其他地方不需要做修改,可以 编译通过,可以跑起来,点Activation 不会报错啊。。
不过我直接把QSerialPortInfo去掉了,没有用自动读取串口信息功能,直接把COM1到COM10全填进去了,可以开串口,可以激活。。
X43A   2015-9-12 4#
这个可以用的啊,楼上正解
楼主   2015-9-15 5#
々&Skyさ 发表于 2015-9-11 17:40
我表示刚才移植了一遍,没有出现问题。除了配置外,代码里面需要修改 sleep 、gettimeofday()和__func__改 ...
pthread 不需要配置吗?
々&Skyさ  Mavic Air认证用户 2015-9-15 6#
fengpengyong 发表于 2015-9-15 10:11
pthread 不需要配置吗?
pthread是需要配置的啊。
楼主   2015-9-17 7#
々&Skyさ 发表于 2015-9-15 14:29
pthread是需要配置的啊。
你能把你移植到vs下的代码给我一份吗?

2685594997@qq.com

谢谢!
楼主   2015-9-23 8#
X43A 发表于 2015-9-12 19:07
这个可以用的啊,楼上正解
你用的qt是什么版本的
々&Skyさ  Mavic Air认证用户 2015-9-24 9#
fengpengyong 发表于 2015-9-17 16:46
你能把你移植到vs下的代码给我一份吗?
亲,已发你QQ邮箱了。。
楼主   2015-9-24 10#
々&Skyさ 发表于 2015-9-24 10:06
亲,已发你QQ邮箱了。。
我找到问题了,是pthread有问题,64位程序运行会出错,32位运行正常。
null   2015-10-8 11#
々&Skyさ 发表于 2015-9-15 14:29
pthread是需要配置的啊。
你编译的是多少位的,各个功能都正常?
null   2015-10-10 12#
々&Skyさ 发表于 2015-9-11 17:40
我表示刚才移植了一遍,没有出现问题。除了配置外,代码里面需要修改 sleep 、gettimeofday()和__func__改 ...
你编译64位的也正常吗?
々&Skyさ  Mavic Air认证用户 2015-10-10 13#
null 发表于 2015-10-10 09:35
你编译64位的也正常吗?
没有编译过64位的。。
邱子鉴   2016-6-26 14#
々&Skyさ 发表于 2015-9-11 17:40
我表示刚才移植了一遍,没有出现问题。除了配置外,代码里面需要修改 sleep 、gettimeofday()和__func__改 ...
能发我一份吗,我的编译也有好多错
邱子鉴   2016-6-26 15#
々&Skyさ 发表于 2015-9-11 17:40
我表示刚才移植了一遍,没有出现问题。除了配置外,代码里面需要修改 sleep 、gettimeofday()和__func__改 ...
871449454@qq.com
谢谢!
fans330be9bf   2016-11-23 16#
支持支持支持
zhangkun   2018-4-11 17#
同求,      876081523@qq.com
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表