草庐IT

c++ - Windows 中的串行通信 - ClearCommError 在读取缓冲区中找不到数据

我想使用串行通信(使用USB到RS232转换器)将数据从笔记本电脑(windows7,处理器2.60GHz)发送到台式机(windowsxp,处理器3.10GHz)。WriteFile函数能够从笔记本电脑发送数据(NumberOfBytesWritten是正确的)。但是在桌面端,ClearCommError检测到读取缓冲区中没有数据。这是我桌面上的相关代码:while(1){ClearCommError(hPort,&dwErrors,&commStatus);if(commStatus.cbInQue!=0)ReadFile(hPort,&data,1,&dwBytesRead,NU

c++ - 是否可以决定哪个函数在 MPI 或任何其他 C++ 库中的哪个处理器上运行?

假设我有8个进程和4个处理器/内核。我可以在程序执行之前将特定进程分配给特定内核吗?例如处理器1=进程号4,5处理器2=进程号1,3处理器3=进程号2,6处理器4=进程号7,8 最佳答案 您可能想看看SetProcessorAffinityMask()功能。恕我直言,这不是您想要的,而是您能得到的最接近的。Aprocessaffinitymaskisabitvectorinwhicheachbitrepresentsalogicalprocessoronwhichthethreadsoftheprocessareallowedtor

c++ - 在 VC++2010 环境之外运行时程序立即崩溃

我有一个程序我已经工作了几个星期,在过去的几天里我做了一些大的改变,现在我不明白为什么这个程序在VC++2010环境之外不起作用.当我打开项目时,程序完美运行,从解决方案配置下拉菜单中选择发布或调试,然后按F5。但是,当我从Release/Debug文件夹中获取可执行文件时,将其放在可以访问我正在使用的Assets的位置,然后运行它,它会加载几秒钟,然后显示这个可爱的错误“Project.exehas停止工作-Windows正在检查问题的解决方案......”当然,像往常一样,Windows无法找到问题的解决方案。在阅读所有这些代码之前快速免责声明:虽然错误是由代码更改引起的,但不确定

c++ - 为什么我的 DLL 被 MSE 检测为可疑?

MicrosoftSecurityEssentials不断提示我将我自己的一个DLL(用nativeC++编写)发送给Microsoft以进行进一步分析,因为(我猜)存在某种可疑行为。我想找出为什么MSE认为我的DLL可疑。DLL是我用nativeC++开发的3D游戏的客户端相关代码。它所做的只是使用套接字api连接到服务器,处理来自服务器的传入消息,处理鼠标和键盘输入(通过OIS-面向对象的输入系统),处理一些Windows消息(调整大小/最小化/退出等)和实现游戏的主循环,它基本上调用我单独的renderer.dll中的函数(这对MSE没问题)。我不会说什么了不起的。我将dll提交

C++ 转换为 base 和 "overwriting"vptr 问题

我刚刚阅读了一个新的C++挑战:http://blogs.msdn.com/b/vcblog/archive/2014/02/04/challenge-vulnerable-code.aspx提供的代码如果充满问题,有些对任何有良好编程习惯的人来说都是显而易见的,有些只有C++本地人才能看到:-)评论中描述了特定行(37)特别危险:ImageFactory::DebugPrintDimensions((ImageFactory::CustomImage*)image);然后该函数调用CustomImage的虚方法(在CustomImage中首次定义)。这据称导致CustomImage的

c - MSVC 生成的符号表中 __real、__imp、__xmm 符号的含义

我是一名UNIX开发人员,负责帮助维护一些Windows软件,我正在查看.DEF生成器同时修复错误。它不包括__xmm,__real和__imp-来自导出的前缀符号。我一直在努力弄清楚这些符号到底是什么。很明显,它们不需要出现在.DEF中。文件(如果它们需要在DLL接口(interface)上导出,编译器将__declspec(dllexport)对其自身进行注释)但是......它们是什么?看起来排除__imp的目的前缀是排除functioncallthunks.正确吗?搜索MSDN未提供有关__xmm的信息或__real(顺便说一句,使用social.msdn.microsoft.

c++ - 如何为代码块 13.12 编译 boost 1.55.0 到 win7(32 位)?

我已经研究了几个小时了,但在任何地方都找不到直接的答案。将boostzip内容解压到目录(放在C:\ProgramFiles\boost_1_55_0中)后,我启动命令提示符并尝试按照指示编译批处理(bootsrap.bat)。失败。消息返回:构建Boost.Build引擎'cl'不是内部或外部命令,也不是可运行的程序或批处理文件。无法构建Boost.Build引擎。请查阅bootstrap.log以进行进一步诊断。bootstrap.log显示:######Using'msvc'toolset.###C:\ProgramFiles\boost_1_55_0\tools\build\v

c++ - 从 CArray 指针访问值

我有一个类有一个CArray对象,我需要从这个CArray获取值到另一个类,但到目前为止还没有这样做。classCTempGridClass:publicCTableCtrl{public:CArray,CArray&>*m_row2;};classCCorePassageAreasPage:publicCDialog{DECLARE_DYNCREATE(CCorePassageAreasPage)public:enum{IDD=IDD_CORE_PASSAGE_AREA};CArray,CArray&>m_row;CTempGridClassGrid;};BOOLCCorePassa

c++ - OpenProcessToken 因本地系统服务的 ERROR_ACCESS_DENIED 而失败

先说说我的情况。我在下面描述的问题来自最终用户的机器,我所要做的只是一份Windows事件日志的拷贝。我无法访问机器本身来运行任何调试测试。现在是问题。我有一个这样创建的服务应用程序:SC_HANDLEhScService=CreateService(hScManager,L"MyServiceID",L"MyServiceName",SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,SrvcPath,NULL,NULL,NULL,NULL,_T(""));服务进程后

c++ - 在 C++ 中使用 Media Foundation 和 Windows 8 捕获问题

这将是我在寻找解释几天后在S​​tackOverflow中提出的第一个问题。请对我的提问保持温和,因为我知道我的问题作为一个普遍问题有点奇怪。我基于Microsoft示例“CaptureToFile”制作了一个MF捕获视频应用程序。它确实适用于Windows7x64。我毫无问题地升级到VisualStudio2013。当我尝试将所有开发都放在Windows8.1x64机器上时出现了问题。应用程序编译和执行没有错误,但无法在异步模式下使用m_pReader->ReadSample()捕获样本;只有前两个样本到达OnReadSample方法;并且必须有“控制”样本,因为所有样本中的IMFS