Articles of 可视化工作室

在Windows中使用事件进行debugging

如果我在Windows中使用CreateEvent创build事件,如何使用Visual Studio中的debugging器来检查该事件是否发送信号? CreateEvent返回一个句柄,它不能让我访问很多信息。 在我调用WaitForSingleObject()之前,我想在进入函数之前检查事件是否有信号。

如何使用自定义环境variables启动Visual Studio?

通常,当您从cmd.exe启动应用程序时,应用程序会inheritance由启动cmd.exe实例设置的环境variables。 但是,从命令行启动Visual Studio时,Visual Studio进程将inheritance在系统级别设置的环境variables的值。 (这可以使用Process Explorer进行确认。) 为什么Visual Studio以这种方式行事,这种行为如何被重写? (请注意,这些问题不涉及与项目编译或应用程序debugging有关的环境variables,它们涉及Visual Studio过程本身。)

CMake:如何禁用单个* .cpp文件的优化?

我想在我的CMake项目中禁用单个* .cpp文件的优化。 我发现CMake提供了如下的实现: SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -O0) 但是,这似乎不适合我。 我生成了一个Visual Studio 2013项目,每当我更改为“释放”或“RelWithDebInfo”,它仍然完全优化该文件,可以在属性下看到。 上述命令的放置位置是否重要? 我有多个cmake文件分布在整个项目。 我将上述命令直接放在* .cpp文件添加到项目的cmake文件中。 或者还有别的方式告诉CMake这个文件不应该被优化吗?

什么是MSVSdebugging器中的Win64线程?

一段时间以来,我一直注意到在Visual Studio(2010)中切换线程的combobox中名为“Win64 Thread”的条目。 他们是什么? 我做multithreading,但我不认为我是创build这些的人。 Process Explorer在我看来显示正确数量的线程句柄,这是该combobox中所有条目的数量减去那些名为Win64线程的数量。 到底是怎么回事?

在代码文件中search一个项目/解决scheme中缺less模式

我正在尝试validationSolution / Project的模式与许多C#代码文件,如每个文件是否包含Namespace "Organization.Project.Data" 。 我需要弄清楚违反模式的文件,了解整体实施情况。 没有一个标准的工具,比如在Visual Studio 中的文件search ,可以帮助用一个模式find这些文件,但是却没有。 即使是标准的工具,这有助于实现Regex based pattern search没有这样做的选项。 唯一的select,我能想到的是开发一个自定义实用程序,其中search给定的父文件夹中的所有文件,并Regex pattern search in a file应用正则Regex pattern search in a file ,在那里我可以很容易地实现non existence 。 有没有现成的选项/设置,我不知道?

我的小转储越来越大,无法由Visual Studio加载,我该如何解决?

当我的应用程序崩溃时,它会生成一个小型转储程序以允许进行事后debugging。 我使用选项MiniDumpWithIndirectlyReferencedMemory和MiniDumpWithPrivateReadWriteMemory。 直到最近,当dumpfiles开始超过500MB的时候,这一切都很好。 当我想开始debugging一个大小的转储的时候,Visual Studio会抛出以下错误。 “没有足够的存储空间来处理这个命令” 我有32位的WinXP,其中4GB的内存,我用的less于1GB。 根据VS2008在这个过程中是如何使用它的内存,它应该有足够的可寻址空间。 我不想做的事情: 黑客WinXP获得更多的内存:该应用程序只保持增长,所以这只会暂时工作。 以下是我find的可能操作列表: http : //www.msfn.org/board/topic/62001-not-enough-storage-is-available-to-process-this-command/ 切换到64位操作系统 省略MiniDumpWithPrivateReadWriteMemory选项 那我该如何解决呢? 从转储中省略一些dll? 从包含不同转储的dll组中分离内存? 任何想法如何做到这一点? (如果这是可能的话) …?

在本地DLL中embedded多个相同名称的资源(RC)文件

对于我的应用程序(一个MMCpipe理单元),我需要创build一个包含本地化为不同语言的string的本地DLL。 换句话说,如果您要使用Visual Studio检查此DLL,则会看到多个string表,每个string表与不同的区域设置相关联,但包含相同的stringID。 我想采取的方法是在我的项目目录下有各种子目录,如“de”,“en”,“es”等(即每种语言一个)。 在每个子目录内都会有一个名为“Resources.rc”的文件,这个文件将是包含该语言string的RC文件。 在这个结构中拥有我的资源对于本地化团队来说是非常理想的。 我设法创build了我的各种RC文件,并将它们添加到我的Visual C ++项目中。 它们都在Visual Studio的解决scheme资源pipe理器中正确显示(您基本上看到名为“Resource.rc”的条目的五个实例,但每个条目指向不同的文件)。 问题来自build设我的项目。 似乎只有一个RC文件(在vcproj文件中首先指定的文件)被编译成一个RES文件并包含在我的DLL中。 大概这是因为Visual Studio不喜欢RC文件都具有相同名称的事实。 有什么办法实现我想要的? 谢谢!

在C ++中实现C库函数

在C ++中实现C库有什么缺点? 该库将被用于使用Visual Studio 2008或更新版本构build常规PC的Windows应用程序。 目前还不清楚为什么规范说它应该是C库。 我猜测他们想要的是简单的C-API,而不是纯粹的C库。 但是我的老板不同意。 无论如何,我想要做的是extern "C"所有函数声明,并在实现文件中使用C ++。 我做了一些testing,即使应用程序编译为C(通过在Visual Studio中更改项目选项),一切都可以正常工作。

ShellExeute格式DOS命令

我正在尝试使用Windows ShellExecute API执行DOS的FORMAT命令。 我不知道我应该如何运行ShellExecute的DOS命令。 目前我正在使用下面的代码: DWORD returnCode=0; TCHAR Command[1024]; _stprintf_s(Command, _T("Format M: /FS:FAT32 /Q /X /V:RED")); SHELLEXECUTEINFO sexi = {0}; sexi.cbSize = sizeof(SHELLEXECUTEINFO); sexi.hwnd = NULL; sexi.fMask = SEE_MASK_NOCLOSEPROCESS; sexi.lpFile = _T("cmd.exe"); sexi.lpParameters = Command; sexi.nShow = SW_SHOW; if(ShellExecuteEx(&sexi)) { DWORD wait = WaitForSingleObject(sexi.hProcess, INFINITE); if(wait == WAIT_OBJECT_0) GetExitCodeProcess(sexi.hProcess, &returnCode); } 运行这段代码只会等待WaitForSingleObject等待cmd窗口closures。 我曾尝试使用命令string作为SHELLEXECUTEINFO lpFile但失败。 甚至当执行这个代码时,它只是打开一个CMD窗口而不执行format命令。 […]

如何在Windows上使用Vim中开发者命令提示符的命令行?

我在此笔记本电脑上安装了Visual Studio Express for Windows Desktop ,并且可以使用命令cl /EHsc filename.cpp和使用命令cl /clr filenameclr.cpp命令的.NET类的C ++程序编译C ++源文件开发人员命令提示符VS2012行使用此说明: http : //msdn.microsoft.com/en-us/library/ms235639.aspx 我怎样才能在Microsoft Windows上使用这些命令在Vim (文本编辑器)中进行编译? :cl /EHsc filename.cpp和:cl /clr filenameclr.cpp不起作用。