QT中如何使用_InterlockedIncrement

mxkong 2011-11-23 12:30:10
各位好,我本来在VS2010上的一个程序想要移植到QT上,其中一个类调用了VS中intrin.h的_InterlockedDecrement16函数,但在QT中报错:intrin.h找不到。我查看过QT中的qautomic_window.h中似乎可以加锁,但又不会使用。我的问题是:
1. 如果要用intrin.h,如何找到相应的lib?
2. 如果用QT自带的函数替换该函数,应该怎么做?
多谢啦~
...全文
334 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mxkong 2011-11-23
  • 打赏
  • 举报
回复
谢谢楼上,我的问题是QT用了minGW的编译器,而原工程是VC的编译器,所以不能调用intrin.h,现在这个可以用了。现在的问题是:

原本在VS2008上的工程移植到QTCreator上时,错误如下:

C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE\atlbase.h(5240) : error C2664: “GetModuleHandleW”: 不能将参数 1 从“const char [13]”转换为“LPCWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE\atlbase.h(5564) : error C2664: “ATL::CRegKey::QueryStringValue”: 不能将参数 2 从“TCHAR [64]”转换为“LPTSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE\atlbase.h(5573) : error C2664: “T2OLE_EX”: 不能将参数 1 从“TCHAR [64]”转换为“LPTSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE\atlbase.h(5739) : error C2664: “RegEnumKeyExW”: 不能将参数 3 从“TCHAR [256]”转换为“LPWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
C:\Program Files\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE\atlbase.h(5739) : fatal error C1903: 无法从以前的错误中恢复;正在停止编译

原本在VS2008上的字符集为UNICODE,运行正常;但是在QT项目里,在哪儿设置字符集?
我试过项目-》编辑器设置-》文件编码 设置为utf-8,但没有效果。请教各位如何解决
bruceteen 2011-11-23
  • 打赏
  • 举报
回复
不是有源代码吗?
我在源代码中搜索 InterlockedDecrement,找到了QBasicAtomicInt
在qt帮助文件中找不到QBasicAtomicInt,于是再去源代码中找,看到 class QAtomicInt : public QBasicAtomicInt

于是在帮助文件中输入 QAtomicInt,不用我再说了吧?!

#include <QAtomicInt>
QAtomicInt a = 0;
a.ref(); // 加一
a.deref(); // 减一

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧