Articles of visual studio 2005

在VS,UNIX / Linux中删除之后,STL迭代器会发生什么?

请考虑以下情况: map(T,S*) & GetMap(); //Forward decleration map(T, S*) T2pS = GetMap(); for(map(T, S*)::iterator it = T2pS.begin(); it != T2pS.end(); ++it) { if(it->second != NULL) { delete it->second; it->second = NULL; } T2pS.erase(it); //In VS2005, after the erase, we will crash on the ++it of the for loop. //In UNIX, Linux, this doesn't crash. }//for 在我看来,在VS2005中,在“擦除”之后,迭代器将等于end(),因此在尝试增加它时会崩溃。 […]

如何为Visual Studio 2005安装pthread_win32(Windows pthread / posix线程库)?

只是要清楚 – 我已经search了互联网的深度,并回来了解如何做到这一点 我正在寻求帮助,设置pthread_Win32来与Visual Studio 2005一起工作。我使用C语言进行编程,并且使用pthread.h编写了大量的multithreading任务。 但是,由于pthread是unix的本地代码,所以我必须编写所有的代码,然后用ssh来远程unix系统来运行它。 这使得开发需要更长的时间,而且效率非常低。 我非常喜欢(比什么都重要)能够在我的win32机器上工作,所以我可以在Visual Studio中开发,就像我已经做了相当长的一段时间。 我已经将pthread.lib文件和pthread.h文件安装到其他所有文件所在的lib /头目录中。 另一方面(实际的库)的DLL,我已经放在c:\ windows \ system32中。 我试图添加DLL作为依赖项(右键单击项目 – >引用 – >添加新的引用),但正如其他人所说,我得到的是一个空白的对话框,没有select添加任何DLL文件或任何东西。 它似乎认识到头文件,但我编译时得到这些错误: 1>链接… 1> main.obj:错误LNK2019:无法parsing的外部符号_ imp _pthread_join在函数_main中引用 1> main.obj:错误LNK2019:无法parsing的外部符号_ imp _pthread_create在函数_main中引用 1> main.obj:错误LNK2019:无法parsing的外部符号_ imp _pthread_exit在函数_fcount中引用 从我的研究中,我确定这是DLL的问题,我假设它找不到我在代码中引用的函数的定义。 我search了高和低,我似乎无法找出任何方法来克服这个问题。 我已经添加了lib /头文件的目录到我的链接器,只是在案例中,但没有解决问题。 我需要在visual studio中做一些工作来指定我需要将pthreadVC2.dll作为项目依赖关系,而在这一点上这似乎是不可能的(也是非常令人沮丧的)。 任何智慧的话语? 非常感谢你

确定64位与32位Windows

我想configurationvisual studio 2005复制.dll的基础上是否在构build过程中的操作系统是64位或32位。 我不想指定平台目标是什么。 我第一次尝试使用batch file来查找Windows版本,但一些32位和64位版本的Windows共享相同的版本号。 任何人都知道有任何方法来检查这个? 谢谢!

可以命令提示符显示unicode字符?

例如: cout << "你好" << endl;

在Windows上的本地C ++应用程序中的自动死代码检测?

背景 我有一个使用本地C ++编写的应用程序,这个应用程序在几年的时间里大概是60 KLOC。 有许多function和类已经死了(大概10-15%,就像下面的类似的基于Unix的问题一样)。 我们最近开始对所有新代码进行unit testing,并尽可能将其应用于修改后的代码。 不过,我会做一个SWAG,目前我们的testing覆盖率还不到5%。 假设/约束 该方法和/或工具必须支持: 本机(即非托pipe)C ++ Windows XP Visual Studio 2005 不得要求用户提供覆盖范围的testing用例。 (例如,不能依靠unit testing来生成代码覆盖率) 如果方法支持超过这些要求,那么很好。 注意:我们目前使用的是Visual Studio 2005的Professional版本,而不是Team System。 因此,使用团队系统可能是一个有效的build议(我不知道,我从来没有使用过),但我希望这不是唯一的解决scheme。 为什么使用unit testing代码覆盖是有问题的 我相信一个通用的工具不可能在任何应用程序中发现所有的死亡(例如不可到达的代码),而且没有误报(我认为这相当于停机问题)。 但是,我也相信一个通用的工具可能会find很多types的死代码,而这些代码很可能实际上是死的,比如在代码中从来没有引用过的类或函数。 通过使用unit testing来提供这个覆盖范围,您不再使用通用algorithm,从而增加了可以检测到的死代码的百分比以及任何命中不是误报的可能性。 相反,使用unit testing可能会导致错误的否定,因为unit testing本身可能是唯一行使给定代码的东西。 理想情况下,我将进行回归testing,以执行所有外部可用的方法,API,用户控件等,作为代码覆盖率分析的基准度量,以排除某些方法被误报。 可悲的是,我目前没有这个自动化testing。 由于我拥有如此之低的testing用例覆盖百分比的庞大代码库,因此我正在寻找一些可以帮助您,而无需花费大量时间投入编写testing用例的工作。 题 在Visual Studio 2005开发环境中,如何在Windows平台上的本机C ++应用程序中以自动或半自动的方式检测死代码? 也可以看看 遗留C / C ++项目中的死代码检测 我想告诉VC ++编译器编译所有的代码。 可以这样做吗?

SSIS程序包失败,因为“脚本任务失败,因为脚本没有预编译”

我开发了一个非常简单的SSIS包(在VS2005 w / .Net Framework V 2.0.50727 SP2中),它获取用户的电子邮件列表,启动for-each循环容器,然后执行脚本任务以检索用户特定的数据,通过电子邮件将其发送给用户。 当我在我的开发盒上运行它时,一切都很好,并按照它应该运行。 但是,当我将程序包部署到运行Windows NT 5.2(Build 3790:Service Pack 2)上的Microsoft SQL Server 2005 – 9.00.5000.00(X64)Standard Edition(64位)的生产服务器时,任务将失败。 原来的错误信息是: 以用户身份执行:xxxxx。 对于64位代码,Microsoft(R)SQL Server执行包实用程序版本9.00.5000.00:0x00000009源:PackageName说明:由于未预编译脚本,因此任务无法在64位环境中执行。 请打开选项以在任务编辑器中预编译脚本。 结束错误…错误DTExec:程序包执行返回DTSER_FAILURE(1)。 广泛的研究后,互联网build议我尝试: 通过更改SQL作业中的执行属性并通过将我的RunIn64BitMode属性从true更改为false来在32位运行包 由于“选项”/ X86“无效”而失败。 安装Microsoft修补程序 这不适用,因为我已经在SP2上运行 所以经过更多的研究,我发现我需要打开“请打开选项,在任务编辑器中预编译脚本”。 SOURCE:ssis-dtsx DOT blogspot DOT com / 2010/03 / can-execute-in-64-bit-environment.html其中包含: 确保每个脚本任务都有PreCompile = True 打开脚本任务编辑器,切换到脚本选项卡,并确保PrecompileScriptIntoBinaryCode = True 点击Design Script打开代码编辑器(Visual Studio for Applications),然后使用File> Close […]

SHBrowseForFolder和快捷键

在我的C ++ Windows应用程序中,我有一个应该允许最终用户select文件夹的function。 我正在使用SHBrowseForFolder,它工作正常,除了文件夹快捷方式不显示在对话框中。 有谁知道是否有可能configurationSHBrowseForFolder,以便最终用户将能够导航文件夹快捷方式? 编辑:2010年5月24日,1:10 EST: 好吧,我要展示我迄今为止的代码。 我曾尝试使用在我的callback过程中使用BFFM_IUNKNOWNcallback的build议,但一直在努力弄清楚如何提供一个IFolderFilter后代工作。 1.被调用的代码: Error CFolderChooserDialog::RunDialog() { Error runResult = kError_NotInitialized; if (VERIFYN(kLyndsey, m_ReferenceCount > 0)) { runResult = kError_Unexpected; m_AllFoldersFilter = new TAllFoldersFilter(); if (VERIFYN(kLyndsey, m_AllFoldersFilter)) { char selectedDirectoryBuffer[MAX_PATH]; m_DirectoryPath.CopyInto(selectedDirectoryBuffer); BROWSEINFO bi; memset(&bi, 0, sizeof(bi)); bi.hwndOwner = MyGetMainHWND(m_CBP); bi.pidlRoot = NULL; bi.pszDisplayName = selectedDirectoryBuffer; bi.lpszTitle = (const char*)m_Description; […]