javascript

git

java

python

git-remote

reactjs

c++

github

django

c#

operators

git-fetch

typescript

user-experience

chmod

css

content-type

variables

var

loops

c ++-文件如何进入MSVC ++ 2010中的外部依赖关系?

我不知道为什么我的一个项目的VDSERR.h列在“外部依赖项”下,而另一个却没有,并给我一个关于其中定义的符号的“未定义符号”编译器错误。 如何将这个文件也包含在其他项目中? (可能是通过拖放操作,但是我想在这里知道确切的设置。)

trans by 2020-08-11T05:19:42Z

如何使用WinDbg分析VC ++应用程序的故障转储?

如何使用WinDbg分析转储文件?

trans by 2020-08-03T15:29:14Z

在C ++项目中编译不使用预编译头的C文件?

我可以在C ++项目中为.c文件禁用预编译头吗?

我想将.C文件添加到程序中的C语言脚本虚拟/抽象机时出现这些错误:

错误1错误C1853:“ Release \ pluginsa.pch”预编译的头文件来自编译器的早期版本,或者预编译的头文件来自C ++,并且您正在C中使用(反之亦然)Z:\ Profile \ Rafal \ Desktop \ samod \ source \ amx \ amx.c 1 1插件

所有其他内容都是C ++,并使用我的预编译头。

trans by 2020-08-02T23:29:12Z

visual c ++-错误lnk2026:safeseh imag模块不安全

构建示例可视C ++项目时出现此错误。首先,我下载了3个示例项目,所有示例项目都解决了同一问题,打印出所有小于N的素数(您可能知道这些示例项目吗?)。 我没有任何问题地构建了纯C项目。 但是,当我尝试构建一个基于程序集的项目时,出现了此错误。

谢谢。

trans by 2020-07-30T03:21:00Z

C ++-size_t vs int警告

我总是收到以下代码类型的警告。

std::vector v;
for ( int i = 0; i < v.size(); i++) {
}

size()

我知道size()返回size_t,只是想知道是否可以忽略此警告,还是应该将所有类型为size_t的循环变量

trans by 2020-07-29T01:07:17Z

如何使用_CRT_SECURE_NO_WARNINGS

我在使用向导通过几行代码生成的简单MFC窗口应用程序中出现编译错误:

错误C4996:'strncpy':此函数或变量可能不安全。 考虑改用strncpy_s。 要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。 详细信息请参见在线帮助。

我设置了_CRT_NONSTDC_NO_WARNINGS

但这没有帮助。 我还有另一个非常接近的项目,该项目在该位置仅生成警告,并且没有_CRT_NONSTDC_NO_WARNINGS定义。

项目之间的唯一区别是向导中的几个不同选项。

为什么_CRT_NONSTDC_NO_WARNINGS在第一个项目中无济于事,为什么没有这个定义,第二个项目也可以毫无问题地编译?

trans by 2020-07-27T16:01:44Z

Visual C ++中的DLL引用

我有C ++经验,但没有MSVC。

我想做的是将来自开源项目的.dll合并到我的项目中。 该代码可用,我已经构建了它。 我有.dll和.lib,据我所知,它是C ++项目所必需的。

不幸的是,现在没有简单的“添加引用”,将我的.dll放入包含目录并将其添加到我的解决方案中。 我已经编辑了项目属性页,“ C / C ++附加包含目录”选项以及将.lib添加为附加链接程序依赖项。 我在解决方案树中为dll和lib创建了一个include目录。

我的问题是,当我尝试包括文档中的头文件时,VS输出吐出错误消息。 现在,我意识到我正在使用dll / lib组合,并且解决方案中不存在.h文件,那么如何添加适当的包含项? 我也正在使用QT工具箱,但是我如何从开放源代码库中添加其他头文件/ dll,这使我难以理解。

有人能指出我正确的方向吗?

trans by 2020-07-24T02:35:27Z

C ++-睡眠的意义(0)

我曾经在代码的某些部分看到Sleep(0),那里有一些无限/长的while循环可用。 我被告知它将使时间片可用于其他等待过程。 这是真的? Sleep(0)有什么意义?

trans by 2020-07-20T14:00:07Z

为什么要发出这样的复杂代码以将有符号整数除以2的幂?

当我使用VC ++ 10编译此代码时:

DWORD ran = rand();
return ran / 4096;

我得到这个反汇编:

299: {
300:    DWORD ran = rand();
  00403940  call        dword ptr [__imp__rand (4050C0h)]  
301:    return ran / 4096;
  00403946  shr         eax,0Ch  
302: }
  00403949  ret

简洁明了,并用逻辑右移将二等分代替。

但是,当我编译这段代码时:

int ran = rand();
return ran / 4096;

我得到这个反汇编:

299: {
300:    int ran = rand();
  00403940  call        dword ptr [__imp__rand (4050C0h)]  
301:    return ran / 4096;
  00403946  cdq  
  00403947  and         edx,0FFFh  
  0040394D  add         eax,edx  
  0040394F  sar         eax,0Ch  
302: }
  00403952  ret

在进行正确的算术移位之前执行一些操作。

这些额外的操作有什么需要? 为什么算术移位还不够?

trans by 2020-07-20T09:10:52Z

为什么Visual Studio找不到我的DLL?

这个问题已经在这里有了答案:

  • 如何在Visual Studio中将路径设置为DLL文件? 6个答案

在Visual Studio 2010中的VC++ Directories > Executable Directories下,我指定了glew32d.dll的路径。但是,当我运行可执行文件时,它仍然会抱怨。

另一方面,如果我将DLL复制到本地文件夹中并运行可执行文件,那么它不会抱怨。

有人可以告诉我如何解决此问题吗? 此外,为什么Visual Studio无法识别该路径?

更新资料场景:我目前使用一个模板项目,该模板项目用作我很多项目的入门代码。 该模板取决于glew32d.dll。 我通常将所有依赖的dll存储在一个公共bin文件夹中。 我希望引用此文件夹,Visual Studio可以从那里读取dll,而不必每次都复制dll。 什么是处理此问题的好方法?

trans by 2020-07-20T04:31:39Z

visual c ++-在C ++中转换为bool的性能含义是什么?

[这个问题与这个问题有关,但不相同。]

我的编译器警告不要将某些类型隐式转换或转换为bool,而显式转换不会产生警告:

long t = 0;
bool b = false;
b = t;                    // performance warning: forcing long to bool
b = (bool)t;              // performance warning
b = bool(t);              // performance warning
b = static_cast<bool>(t); // performance warning
b = t ? true : false;     // ok, no warning
b = t != 0;               // ok
b = !!t;                  // ok

这与Visual C ++ 2008一起使用,但我怀疑其他编译器可能也有类似的警告。

所以我的问题是:转换/转换为bool的性能意味着什么? 在某些情况下(例如,对于某些目标体系结构或处理器),显式转换是否具有更好的性能? 隐式转换是否会使优化器感到困惑?

微软对其警告的解释并不是特别有帮助。 他们暗示有充分的理由,但没有解释。

trans by 2020-07-17T15:05:20Z

Visual Studio调试器错误:无法启动程序找不到指定的文件

我在C:\这里完整路径\ VS2010 \ blender.sln中有一个解决方案

该解决方案包含许多项目(大约100个)。 当我编译它们时,它们都可以正常工作。 我可以毫无问题地运行它们,并且(相当)一切正常(有一些错误)。其中一个项目是ALL_BUILD,但是如果我尝试调试INSTALL(另一个项目),它将给出相同的错误。 我正在使用RELWithDebInfo作为配置进行编译,如果我手动执行该程序,它将正常工作。 它以C:\\完整路径输出\ VS2010 \ bin \ RelWithDebInfo输出

但是如果我尝试运行编译器,它会说

“无法启动程序 C:\此处完整路径\ VS2010 \ RelWithDebInfo \ ALL_BUILD 找不到指定的文件”

我试图将编译后的程序复制到VS所需的路径中,但是它引发了相同的错误。

我应该怎么做才能解决这个问题? 现在,我将cmake设置为也生成一个mingw项目,并对其进行编译并使用gdb对其进行调试,但这确实是一个缓慢且不切实际的工作流程,我想使用VS调试器。

我必须说,如果我使用Debug作为配置进行编译,则该程序甚至无法启动。

我在Win7 64位上使用VS2010 Express

(这是一个很大的开源程序,所以我不知道它到底在做什么)

trans by 2020-07-14T05:52:28Z

在C ++中,等效于<map>的C#?

这个问题已经在这里有了答案:

  • C#等效于C ++ map <string,double> 8个答案

我定义了一个类myComplex。 我需要将其映射为整数。 在C ++中,我会创建一个映射为map<myComplex,int>第一;

如何在C#中做这样的事情?

trans by 2020-07-13T16:18:58Z

C / C ++:如何使用do-while(0); 构造没有C4127之类的编译器警告?

由于此答案中所述的原因,我经常在#defines中使用do-while(0)构造。 另外,我尝试使用编译器提供的尽可能高的警告级别,以捕获更多潜在的问题,并使我的代码更健壮和跨平台。 所以我通常在gcc上使用-Wall,在MSVC上使用/Wall

不幸的是,MSVC抱怨do-while(0)构造:

foo.c(36) : warning C4127: conditional expression is constant

我应该如何处理此警告?

只是全局禁用所有文件? 对我来说,这似乎不是一个好主意。

trans by 2020-07-13T02:26:28Z

C ++-什么是“堆栈对齐”?

什么是堆栈对齐?为什么使用它?可以通过编译器设置控制它吗?

这个问题的细节来自尝试将ffmpeg库与msvc一起使用时遇到的问题,但是我真正感兴趣的是对“堆栈对齐”的解释。

细节:

  • 当运行链接到avcodec的msvc编译程序时,我得到了出现以下错误:“编译器未对齐堆栈变量。Libavcodec具有被错误编译”,随后avcodec.dll崩溃。
  • avcodec.dll未使用msvc进行编译,因此我无法看到内部发生了什么。
  • 当运行ffmpeg.exe并使用相同的avcodec.dll时,一切正常。
  • ffmpeg.exe并未使用msvc进行编译,而是使用gcc / mingw进行了编译(与avcodec.dll相同)

谢谢,

Dan

trans by 2020-07-12T18:54:35Z

我如何迭代一个常数向量?

我有一个带有字段名称的Student向量。

我想遍历向量。

void print(const vector<Student>& students)
    {
    vector<Student>::iterator it;
    for(it = students.begin(); it < students.end(); it++)
        {
            cout << it->name << endl;
        }
    }

在C ++中,这显然是非法的。

请帮忙。

trans by 2020-07-09T18:34:12Z

为什么我的应用程序需要Visual C ++可再发行组件包

我在Visual Studio中编写一个简单的C++应用程序。 它还有一个安装项目。它在我的开发计算机上运行良好,但是当我在用户计算机上安装此应用程序时,它需要Visual C++ Redistributable Package。我想知道为什么我的应用程序需要C++ Redistributable? Windows附带了标准C++131运行时库,不是吗?

trans by 2020-07-05T16:42:13Z

Windows-我应该使用哪个版本的MSXML?

似乎这是一个常见问题,尽管我无法在SO上找到它。

我应该在应用程序中使用哪个版本的MSXML,更重要的是,我应该如何决定?

有MSXML3、4、5和6。

我最近在使用MSXML v4的调用wcf-service-by-vbscript中发布了一些代码。 AnthonyWJones发布了我不应该使用4,而应该使用3或6,但是可能使用3。当然不是v5!

为什么? 我想了解更多有关选择要在我的应用程序中使用的MSXML版本的条件。

额外的问题:是否有人总结了随着时间的推移,不同版本的MSXML之间的差异?


到目前为止的摘要:

  • MSXML6
    应该是第一选择。 于2006年发布,其中包含性能和合规性修复程序。 如果可以,请使用它。 很好。 没有合并模块; 为了将MSXML6运行时与您的应用程序捆绑在一起,MS建议打包MSXML6 msi文件。 MSXML6是从MSXML3 / 4升级的,但不能替代它们,因为它不再提供某些功能。 您可以在此处获取MSI。
  • 丰满
    第二选择。 部署最广泛的版本。 最初于2000年3月交付。正在积极维护,没有任何新功能。 当前受支持,如果您使用的是SP5(2005年发货)或更高版本。 SP7是最新的(也是从2005年开始)。
  • MSXML5
    仅作为MS-Office的一部分发布。 目前由Microsoft支持,但仅作为Office的一部分,不适用于构建应用程序。 不要构建依赖于MSXML5的应用程序:Verboten。
  • ΜΣΞΜΛ4
    最初发货? 当前处于“维护模式”。 Microsoft鼓励人们将MSXML4迁移到MSXML6。 如果您使用的是2003年出厂的MSXML4SP2或更高版本,则当前受支持。请在此处下载MSXML4SP2。 可以重新分配。

在Microsoft xmlteam的博客中,在Internet Explorer中使用正确版本的MSXML是很好的入门。

trans by 2020-07-03T13:08:21Z

Visual C ++相当于GCC的__attribute__((__packed__))

对于某些编译器,有一个用于结构的打包说明符,例如::

RealView ARM compiler has "__packed"
Gnu C Compiler has "__attribute__ ((__packed__))"
Visual C++ has no equivalent, it only has the "#pragma pack(1)"

我需要可以放入结构定义中的内容。

任何信息/黑客/建议吗? TIA ...

trans by 2020-07-01T15:06:58Z

C ++-放置新的和D

什么是删除此处分配的所有内存的正确方法?

  const char* charString = "Hello, World";
  void *mem = ::operator new(sizeof(Buffer) + strlen(charString) + 1);
  Buffer* buf = new(mem) Buffer(strlen(charString));

  delete (char*)buf;

要么

  const char* charString = "Hello, World";
  void *mem = ::operator new(sizeof(Buffer) + strlen(charString) + 1);
  Buffer* buf = new(mem) Buffer(strlen(charString));

  delete buf;

还是两者都一样?

trans by 2020-06-29T23:27:44Z

1 2 3 4 5 6 7 下一页 共7页