包含<windows.h> </windows.h>时出现Qt错误

时间:2010-10-14 07:15:03

标签: windows qt include

如何在Qt应用程序中使用windows.h?包含它后,我得到了几个错误,如

c:\Qt\4.4.3\include/QtCore/../../src/corelib/arch/qatomic_windows.h:387: error:    
declaration of C function 'long int InterlockedCompareExchange(long int*, long int,    
 long int)' conflicts with    
d:\old\mingw\bin\../lib/gcc/mingw32/4.3.3/../../../../include/winbase.h:1681: error:    
previous declaration 'LONG InterlockedCompareExchange(volatile LONG*, LONG,    
 LONG)' here  

全部包括在内:

windows.h    
iostream    
QtCore    
QtGui    
QObject    
QString    
QFile    
QProcess    
QIODevice

编辑:问题消失,Process.start()现在正在运作,但我无法说,改变了什么改变了。

EDIT2:事情并非那么简单。我会创造新的问题。

EDIT3:相同的代码QProcess Process; Process.start("notepad.exe");main()中起作用,并且在称为插槽的函数中不起作用。仅适用QProcess *Process = new QProcess(); Process->start("notepad.exe");

2 个答案:

答案 0 :(得分:1)

为您的Qt版本使用正确版本的mingw。 Qt 4.3与mingw&gt; = 4

不兼容

答案 1 :(得分:1)

值得调试QProcess抛出QProcess :: UnknownError的原因 - 切换到直接使用本机API确实使得QT的全部意义 - 它毕竟是跨平台 - 有点儿玩笑。

你正在做工作的事情,这可能已经使用了WinExec或system(),因此,你尝试启动记事本只会再次失败。

也许QT只需要notepad.exe的完整路径?肯定有时候在QT中编写平台代码,这不是其中之一。