草庐IT

c++ - VS2010静态链接问题

我公司最近从VS2005升级到VS2010。我们有一个巨大的项目,它使用了很多静态链接到exe中的模块。但是VS2010中的链接似乎存在一些问题。为了解释我们的问题,我们构建了一个最小的示例项目,其组成如下图所示:有一个应用程序使用库A中的一个函数。库A调用库B和库C中的一个函数。这两个库调用库D提供的一个函数。对于FrameworkandReferences下的Exe1我们将所有内容都设置为false除了LinkLibraryDependencies这是设置为真。添加的唯一引用是链接到库A。对于每个库,所有设置都设置为false。库A仅获取对B和C的引用,而这两个库仅获取对D的引用。

C++0x Lambda 到 VS 2010 中的函数指针

我正在尝试使用lambda代替函数指针传递,但VS2010似乎无法转换它。我试过像这样使用std::function但它崩溃了,我不知道我这样做是否正确!#include#include#include#include#includevoidmain(){std::functionf=[](void*)->void{std::cout(),0);getch();}令我感到奇怪的是,编译器无法将这样的lambda转换为简单的函数指针,因为它不捕获任何变量-即使它捕获了变量,我也想知道可以做什么。每个lambda的类型是否唯一?所以我可以修改一个模板函数,使用lambda的类型作为模板参数

c++ - Intellisense "Toggle Completion Mode"不适用于 Visual Studio 2010 Professional 中的 C++

我在VisualStudio2010Professional的“编辑”->“智能感知”选项卡下使用“切换完成模式”时遇到问题。图片描述得很好。完成模式在C#中工作正常。请帮忙。提前致谢! 最佳答案 无法在C++IntelliSense上打开建议模式(在VS2010和2012中)。MSDNLibrary(对于VS2010)说:SuggestionmodeisavailableinVisualBasicandC#.据报道(link)是VS2012RTM中的错误,Microsoft的回答是:C++Intellisenseonlyhason

c++ - 具有大型静态数组的 Visual C++ 2010 中的编译时间较长

我们有一个C++项目,其中有几个大型静态数据表(结构数组)由预处理工具生成并编译到我们的项目中。我们一直在用VC++2008,但准备迁移到2010,这些数据表突然需要很长时间来编译。例如,一个这样的表有大约3,000个条目,每个条目都是一个包含多个int和指针的结构,所有这些都是静态初始化的。这个文件在VC++2008中编译需要大约15秒,但在VC++2010中需要30分钟!作为一项实验,我尝试将此表平均分成8个表,每个表都在自己的.cpp文件中,每个表的编译时间为20-30秒。这让我觉得编译器内部的某些东西在这些表的长度上是O(n^2)。cl.exe的内存使用量稳定在400MB左右(

c++ - VC++ 2010 中的 "moveable-only types"问题

我最近安装了VisualStudio2010ProfessionalRC来试用它并测试在VC++2010中实现的几个C++0x功能。我实例化了std::unique_ptr的std::vector,没有任何问题。但是,当我尝试通过将临时对象传递给push_back来填充它时,编译器会提示unique_ptr的复制构造函数是私有(private)的。我尝试通过移动它来插入一个左值,它工作得很好。#include#includeintmain(){typedefstd::unique_ptrint_ptr;int_ptrpi(newint(1));std::vectorvec;vec.pu

c++ - 为什么 Visual Studio 2010 会创建预编译头文件,即使我不要求它?

我安装了VisualStudio2010SP1。我想用C++创建一个简单的Win32控制台应用程序。我单击新建项目\Win32控制台应用程序我点击控制台应用程序,“空项目”没有,“预编译头”没有,“ATL”和“MFC”没有。向导看起来像这样:现在,如果我点击完成,我最终会得到这样一个项目:但是为什么?我不想要预编译的头文件,我只想要一个非常基本的Win32控制台应用程序来练习学习C++。 最佳答案 它们不是预编译的头文件,除非它们是用适当的编译器标志编译的(Yc用于创建pch,Yu用于使用它)。如果选中PrecompiledHead

c++ - 在 VC 2010 中禁用 C++0x 功能?

VC++2010中的C++0x模式是否有关闭开关?我正在从事一个应该在非0x编译器上编译的项目,因此我想根据当前标准进行编译。(即使没有直接使用新功能,仍然有一些微妙之处使C++0x更加宽松)。我发现最接近的开关是ConfigurationProperties->C/C++->Language->DisableLanguageExtensions但事实并非如此。 最佳答案 不,语言扩展通常是非标准的供应商特定添加。C++0X特性:没有直接的方法可以关闭这些特性。一种解决方法是不使用它们。但是,请注意,不同版本的VC运行时在性能上仍然

c++ - 在 VS2010 中禁用所有类型的优化

在VS2010中调试时应该如何禁用所有类型的优化? 最佳答案 为确保优化关闭,请右键单击您的项目->属性->配置属性->C/C++->优化->优化=禁用。这是/Od编译器开关。 关于c++-在VS2010中禁用所有类型的优化,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4707384/

c++ - 如何在 Visual Studio 2010 中构建这个简单的 C++/SWIG/C# 项目?

我需要帮助来设置一个简单的C++/C#SWIG项目。我很难将使用SWIG绑定(bind)的C++项目放在一起。我使用的是VisualStudio2010和最新版本的SWIG。我的代码很简单:cpp_file.h:#pragmaonceclasscpp_file{public:cpp_file(void);~cpp_file(void);inttimes2(intarg);};cpp_file.cpp#include"cpp_file.h"cpp_file::cpp_file(void){}cpp_file::~cpp_file(void){}intcpp_file::times2(in

c++ - VS2010中如何重命名项目名称

我必须在VS2010中将项目名称从AAA重命名为BBB。我能做什么? 最佳答案 重命名项目的每个细节:在解决方案资源管理器中右键单击并重命名该项目。右键单击并重命名任何相关的.cpp和.h文件。右键单击该项目并选择“删除”。确认保存任何更改的文件。退出VisualStudio。重命名项目的目录。重命名项目的.vcxproj和.vcxproj.filters文件。在项目的文件夹中搜索文件内容中对旧项目名称的任何引用。典型的地方是:项目主.cpp文件中的注释。stdafx.cpp中的注释。项目的.vcxproj文件中的条目。启动Visu