解决 MinGW5.14 编译 QT4.4.3 报错的问题

在使用 MinGW5.14 编译 QT4.4.3 时,编译一开始就会报函数原型定义冲突的错误,这是因为 MinGW 的 w32api 包中的 "include/winbase.h" 文件与 QT 中的声明不一致。解决方法如下:
打开 $(QTDIR)/src/corelib/arch/qatomic_windows.h,找到其中的

extern "C" {
    __declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long);
    __declspec(dllimport) long __stdcall InterlockedIncrement(long *);
    __declspec(dllimport) long __stdcall InterlockedDecrement(long *);
    __declspec(dllimport) long __stdcall InterlockedExchange(long *, long);
    __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long);
}

在这段代码前后分别加上预编译条件
#ifndef __INTERLOCKED_DECLARED
#define __INTERLOCKED_DECLARED

#endif

参见 QT4.5.1 的源代码就是这样解决的。
原文地址:https://www.cnblogs.com/christopher/p/1504177.html