标签: visual-c++

奇怪的MSC 8.0错误:"在函数调用中没有正确保存ESP的值......"

我们最近试图将一些Visual Studio项目拆分成库,一切似乎都在一个测试项目中编译和构建,其中一个库项目作为依赖项.但是,尝试运行该应用程序给了我们以下令人讨厌的运行时错误消息:

运行时检查失败#0 - ESP的值未在函数调用中正确保存.这通常是调用使用不同调用约定声明的函数指针的结果.

我们甚至从未为函数指定调用约定(__cdecl等),使所有编译器开关都处于默认状态.我检查过,项目设置与整个库和测试项目的调用约定是一致的.

更新:我们的一个开发人员将"基本运行时检查"项目设置从"两者(/ RTC1,等同于/ RTCsu)"更改为"默认",运行时间消失,使程序运行正常.我完全不相信这一点.这是一个合适的解决方案,还是一个危险的黑客?

c++ x86 stack calling-convention visual-c++

48
推荐指数
6
解决办法
6万
查看次数

是否可以强制函数不被内联?

我想强制一个小函数不被编译为内联函数,即使它非常简单.我认为这对于调试目的很有用.有没有关键字可以做到这一点?

c++ visual-c++

48
推荐指数
5
解决办法
3万
查看次数

首次编译错误时自动停止Visual C++ 2008构建?

我知道我可以编译单个源文件,但有时 - 比如说,在编辑许多文件使用的头.cpp文件时 - 需要重新编译多个源文件.这就是Build的用途.

VC9(Visual C++ 2008)中"Build"命令的默认行为是尝试编译需要它的所有文件.有时这只会导致许多失败的编译.我通常只是观察错误并点击ctrl-break来手动停止构建.

有没有办法配置它,以便构建在第一次编译错误(不是第一次失败的项目构建)自动停止?

c++ visual-studio-2005 visual-studio-2008 visual-studio visual-c++

47
推荐指数
3
解决办法
2万
查看次数

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

这似乎是一个常见的问题,虽然我无法在SO上找到它.

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

有MSXML3,4,5和6.

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

为什么?我想更多地了解选择在我的应用中使用的MSXML版本的标准.

奖金问题:有没有人总结过各种版本的MSXML随时间的差异?


截至目前的摘要:

  • MSXML6
    应该是首选.于2006年发布,包括性能和合规性修复.如果可以,请使用此选项.很好.没有合并模块; 为了将MSXML6运行时与您的应用捆绑在一起,MS建议打包MSXML6 msi文件.MSXML6是MSXML3/4的升级版,但不会替换它们,因为它会中断某些功能.你可以在这里获得MSI .
  • MSXML3
    第二选择.部署最广泛的版本.最初于2000年3月发货.积极维护,没有新功能.目前支持,如果您使用SP5(2005年发货)或更高版本.SP7是最新的(也是从2005年开始).
  • MSXML5
    仅作为MS-Office的一部分发布.目前由Microsoft支持,但仅作为Office的一部分,而不是用于构建应用程序.不要构建依赖于MSXML5的应用程序:Verboten.
  • MSXML4
    最初发货?目前处于"维护模式".微软鼓励人们将MSXML4转移到MSXML6.如果您使用的是2003年发布的MSXML4SP2或更高版本,则目前支持.请在此处下载MSXML4SP2 . 可以重新分发.

在Internet Explorer中使用正确版本的MSXML微软xmlteam在博客一个很好的条目.

windows com scripting msxml visual-c++

47
推荐指数
2
解决办法
2万
查看次数

在哪里下载Microsoft Visual c + + 3.0可再发行组件

我有一个旧的DLL使用Microsoft Visual C++ 2003(7.1)运行时包.不幸的是我不再拥有那个DLL了.没有重新安装VS2003,还有另一种方法可以获得运行时可再发行的dll吗?

dll redistributable visual-studio-2003 runtime visual-c++

47
推荐指数
2
解决办法
15万
查看次数

放置新的和删除

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

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

  delete (char*)buf;
Run Code Online (Sandbox Code Playgroud)

要么

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

  delete buf;
Run Code Online (Sandbox Code Playgroud)

还是他们都一样?

c++ new-operator visual-c++ placement

47
推荐指数
3
解决办法
3万
查看次数

C++预处理器中R和L有什么特别之处?

我通过Visual Studio 2013预处理器运行以下代码.输出令我惊讶.

hello.cpp的内容:

#define A(j) #j

A(A?)
A(B?)
A(C?)
A(D?)
A(E?)
A(F?)
A(G?)
A(H?)
A(I?)
A(J?)
A(K?)
A(L?)
A(M?)
A(N?)
A(O?)
A(P?)
A(Q?)
A(R?)
A(S?)
A(T?)
A(U?)
A(V?)
A(W?)
A(X?)
A(Y?)
A(Z?)
Run Code Online (Sandbox Code Playgroud)

命令:

cl /P hello.cpp
Run Code Online (Sandbox Code Playgroud)

hello.i包含:

#line 1 "hello.cpp"



"A?"
"B?"
"C?"
"D?"
"E?"
"F?"
"G?"
"H?"
"I?"
"J?"
"K?"
"L"
"M?"
"N?"
"O?"
"P?"
"Q?"
"R"
"S?"
"T?"
"U?"
"V?"
"W?"
"X?"
"Y?"
"Z?"
Run Code Online (Sandbox Code Playgroud)

我试着打电话给A(L?p:q)时碰到了这个,这导致了"Lp:q",这对我不利.

这是正确的,定义明确的C++吗?C++中的L和R有什么特别之处?如果文件具有.c扩展名,则L和R被视为与字母表的其余部分相同.这与C++ 11有关吗?它必须是一个新功能,因为旧版本的MSVS不会以特殊方式使用L和R.

我能做些什么来阻止MSVS 2013以这种特殊方式治疗L和R?

c++ visual-c++ compiler-bug c-preprocessor c++11

47
推荐指数
1
解决办法
1888
查看次数

LNK2038:检测到'RuntimeLibrary'不匹配:值'MT_StaticRelease'与file.obj中的值'MD_DynamicRelease'不匹配

我正在整合Matlab,CCuda在一个项目中.我使用Matlab mix将c语言编写的matlab mx函数与cuda运行时库连接起来,出现了关于静态发布中的冲突和c文件与库之间的动态发布的链接错误.谁能解决这个问题?

error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in file.obj. 
Run Code Online (Sandbox Code Playgroud)

c++ matlab cuda visual-c++

47
推荐指数
4
解决办法
7万
查看次数

C++ MFC vs .NET?

我的同事正在使用Visual Studio 2002并使用C++ MFC.我正在用C#开发.

它之前没有任何问题,但现在质疑我们的客户是否真的应该在不同的环境中发展.我的同事们(当然)认为我应该转向C++ MFC.我认为他们可以使用.NET而不是MFC.

有没有理由学习MFC?感觉有点过时了,还是我错了?与MFC相比,针对.NET和.NET的争论是什么?

编辑:

我们正在为核工业开发过程系统和辅助应用.主要应用程序是模拟旧计算机系统并使用C++/MFC的模拟器.它是非常关键的时间,也许它应该仍然是原生C++中的核心.但是仿真器和所有周围应用程序的GUI并不是特别关键.

您是否应该更换现有的MFC应用程序?

.net c# c++ mfc visual-c++

46
推荐指数
3
解决办法
4万
查看次数

为什么我的应用程序需要Visual C++ Redistributable包

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

redistributable msvcrt visual-studio visual-c++ windows-runtime

46
推荐指数
2
解决办法
4万
查看次数