如何在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");
答案 0 :(得分:1)
为您的Qt版本使用正确版本的mingw。 Qt 4.3与mingw> = 4
不兼容答案 1 :(得分:1)
值得调试QProcess抛出QProcess :: UnknownError的原因 - 切换到直接使用本机API确实使得QT的全部意义 - 它毕竟是跨平台 - 有点儿玩笑。
你正在做应工作的事情,这可能已经使用了WinExec或system(),因此,你尝试启动记事本只会再次失败。
也许QT只需要notepad.exe的完整路径?肯定有时候在QT中编写平台代码,这不是其中之一。