• 10498阅读
  • 14回复

[提问]Qt调用windows下Api ,包含头文件出错 [复制链接]

上一主题 下一主题
离线lanhtao123
 

只看楼主 正序阅读 楼主  发表于: 2014-09-25
最近做的项目,因为要调用windows的Api,所以要包含一些windows的头文件。当include <mmsystem.h> 时,直接报了100多个错误,QtCreator也直接跳到mmsystem.h 文件中,而这个文件我的根目录没有的,应该是系统文件,且报错原因都是应为该文件的语法不符合Qt的语法。大家也可以去试下看下效果。
不知道这种问题怎么解决啊。有知道的冒个泡,指导下小弟。

离线roywillow

只看该作者 14楼 发表于: 2014-09-29
你装了几个工具链?是不是环境变量里还有一个工具链,结果现在这个项目搜索头文件的时候搜到了其他的工具链里了?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线bran_lee

只看该作者 13楼 发表于: 2014-09-29
LIBS += -lWinmm ???
当你只有锤子时,你看什么都像是钉子!
离线zhang2349

只看该作者 12楼 发表于: 2014-09-28
回 lanhtao123 的帖子
lanhtao123:你运行没出现错误吗?
我用的是Qt5.1。。不知道这和版本有关系吗? (2014-09-27 15:19) 

我也是跟你一样的版本
5.3.1 mingw 4.8.2
离线roywillow

只看该作者 11楼 发表于: 2014-09-28
回 lanhtao123 的帖子
lanhtao123:刚发现只要我包含了windows.h,就会定位到mmsystem.h这个文件夹下报一推的错误。我想问一下这是什么情况。我的Qt是5.3的,编译器是MinGW4.8.2.
会是我安装的Qt的问题吗 (2014-09-27 22:27) 

我觉得是你的工具链的问题
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线lanhtao123

只看该作者 10楼 发表于: 2014-09-27
回 lanhtao123 的帖子
lanhtao123:文件虽然是在mingw下的,但实际是属于windows的。这个本身应该不会有什么问题吧,他包含的是windows的一些接口 (2014-09-27 21:43) 

刚发现只要我包含了windows.h,就会定位到mmsystem.h这个文件夹下报一推的错误。我想问一下这是什么情况。我的Qt是5.3的,编译器是MinGW4.8.2.
会是我安装的Qt的问题吗
离线lanhtao123

只看该作者 9楼 发表于: 2014-09-27
回 roywillow 的帖子
roywillow:这个目测与Qt无关,出问题的文件是mingw的 (2014-09-27 18:26) 

文件虽然是在mingw下的,但实际是属于windows的。这个本身应该不会有什么问题吧,他包含的是windows的一些接口
离线roywillow

只看该作者 8楼 发表于: 2014-09-27
这个目测与Qt无关,出问题的文件是mingw的
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线lanhtao123

只看该作者 7楼 发表于: 2014-09-27
回 zhang2349 的帖子
zhang2349:WINMMAPI MMRESULT WINAPI midiInOpen(LPHMIDIIN phmi,UINT uDeviceID,DWORD_PTR dwCallback,DWORD_PTR dwInstance,long fdwOpen)
我这边声明是这样的 没有long_PTR (2014-09-27 11:33) 

你运行没出现错误吗?
我用的是Qt5.1。。不知道这和版本有关系吗?
离线lanhtao123

只看该作者 6楼 发表于: 2014-09-27
你运行没出现错误吗?
我用的是Qt5.1。。不知道这和版本有关系吗?
离线zhang2349

只看该作者 5楼 发表于: 2014-09-27
WINMMAPI MMRESULT WINAPI midiInOpen(LPHMIDIIN phmi,UINT uDeviceID,DWORD_PTR dwCallback,DWORD_PTR dwInstance,long fdwOpen)

我这边声明是这样的 没有long_PTR
离线lanhtao123

只看该作者 4楼 发表于: 2014-09-26
回 dbzhang800 的帖子
dbzhang800:你可以贴出一点错误信息出来。
一般来说,不存在不符合Qt的语法一说,因为Qt是库,不是语言。 (2014-09-26 08:42) 

d:\Qt\Qt5.3.1\Tools\mingw482_32\i686-w64-mingw32\include\mmsystem.h:842: error: 'long_PTR' has not been declared
   WINMMAPI MMRESULT WINAPI midiInOpen(LPHMIDIIN phmi,UINT uDeviceID,long_PTR dwCallback,long_PTR dwInstance,long fdwOpen);

都是这样的错啊。

而且我那个是windows的头文件,不是Qt的
                                                                                         ^
离线lanhtao123

只看该作者 3楼 发表于: 2014-09-26
回 zhang2349 的帖子
zhang2349:前面加 #include <windows.h>
 (2014-09-26 09:11) 

加了

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <windows.h>
#include <mmsystem.h>
#include <mmreg.h>
#include <dsound.h>
离线zhang2349

只看该作者 2楼 发表于: 2014-09-26
前面加 #include <windows.h>

离线dbzhang800

只看该作者 1楼 发表于: 2014-09-26
你可以贴出一点错误信息出来。

一般来说,不存在不符合Qt的语法一说,因为Qt是库,不是语言。
快速回复
限100 字节
 
上一个 下一个