Questions tagged «visual-c++»

Microsoft Visual C ++是Windows的C,C ++和C ++ / CLI编译器。编译器的最新版本是Visual C ++2019。编译器支持以下语言:C(支持C90以及Visual Studio 2019中ISO C ++标准的大多数C99和C11部分);C ++(自Visual Studio 2019起支持大多数C ++ 11,C ++ 14和C ++ 17功能以及某些C ++ 20功能)C ++ / CLI(提供与C#等.NET语言的互操作性)。

6
如何在Visual Studio中将路径设置为DLL文件?
我开发了一个依赖于DLL文件的应用程序。当我调试应用程序时,该应用程序会抱怨: “此应用程序未能启动,因为未找到xxx.dll。” 因此,我必须将DLL文件复制到与.vcproj文件相同的目录中。 有没有一种方法可以将项目设置为在(最好是)某些相对路径或(不是最好)某些绝对路径中寻找DLL文件? 与我们在项目设置中设置包含和库路径类似的概念。 我的意思是,当我调试应用程序(点击F5)时,会弹出上述错误。

8
Visual C ++:如何禁用特定的链接器警告?
我正在使用来自CGAL的库,在我的代码编译的链接阶段,它会产生许多这种形式的链接警告: warning LNK4099: PDB 'vc80.pdb' was not found with 'gmp-vc80-mt-sgd.lib' or at 'vc80.pdb'; linking object as if no debug info 如何在Visual C ++ / Studio 2008下关闭此特定链接器警告? 请注意,我对正在使用的外部(CGAL)库没有任何控制。我不能/不想重新编译外部库。因此,需要在我的末端修复消息。


9
如何使用Visual C ++查看代码背后的程序集?
我正在阅读另一个有关两行代码的效率的问题,OP表示他查看了代码后面的汇编,并且这两行在汇编中是相同的。除了题外话,我如何查看编译程序时创建的汇编代码。 我正在使用Microsoft的Visual C ++,但我也想知道是否可以查看用Visual Basic编写的代码背后的程序集。 那么,如何查看用高级语言(如C ++和Visual Basic)编写的程序背后的汇编代码?

10
禁用单个警告错误
有没有办法用Visual Studio禁用cpp文件中的单个警告行? 例如,如果我捕获一个异常但不处理它,则会收到错误4101(未引用的局部变量)。有没有一种方法可以仅在该函数中忽略它,否则可以在编译单元中报告它?此刻,我将#pragma warning (disable : 4101)文件放在顶部,但是很明显,整个文件都将其关闭。


3
MFC和ATL之间的根本区别是什么?
假设我仅将它们用于“常规” GUI程序(没有COM,没有ActiveX,没什么花哨的东西),那么我将在ATL和MFC之间看到什么根本的区别,以帮助我确定要使用哪一个? 我已经在网上进行了一些搜索,但最终没有一个答案真正回答了我的问题: http://msdn.microsoft.com/zh-CN/library/bk8ytxz5(v=vs.80).aspx: “ ATL是一种快速,简便的方法,既可以用C ++创建COM组件,又可以保持较小的占用空间。如果不需要MFC自动提供的所有内置功能,则可以使用ATL创建控件。” 并未真正回答我的问题,因为: 我不在使用COM。 这是否意味着MFC 是不是快吗?为什么/如何? “ MFC允许您创建完整的应用程序,ActiveX控件和活动文档。如果您已经使用MFC创建了控件,则可能要继续在MFC中进行开发。创建新控件时,如果不需要,请考虑使用ATL。 MFC的所有内置功能。” 也没有回答我的问题,因为: 我什至不知道ActiveX 首先是什么。 微软似乎不鼓励使用MFC,但我不知道为什么。 ATL没有提供MFC的“内置功能” 到底是什么? 总的来说,这不能回答我的问题,因为它不能解释不利因素及其背后的原因。 因为直接或间接,所有内容似乎都链接回到上一页: 如何确定对新的C ++项目使用ATL,MFC,Win32还是CLR? “在ATL和MFC之间进行选择比较棘手。 [[不开玩笑!]] 我将带您转到MSDN的页面进行选择,以便在它们之间进行选择。” 显然,这不能回答我的问题。:) http://www.codeguru.com/forum/archive/index.php/t-64778.html 等等 我目前观察到的(在最近几天内,试图同时学习两者): ATL基于模板或编译时多态性。 ATL方法往往是非虚拟的,并且倾向于返回引用。 MFC基于虚拟方法或运行时多态性。 MFC方法往往是虚拟的,并且倾向于返回指针。 但它们之间似乎在架构上没有任何区别: 两者都使用消息映射(BEGIN_MSG_MAP与BEGIN_MESSAGE_MAP...大不相同) 两者都将Win32方法包装到类中 两者似乎都有相似的类别CWnd。CWindow 但是然后,如果除了编译时和运行时方面没有真正的区别,那么为什么两者都存在?其中之一不够吗? 我在这里想念什么?
110 c++  visual-c++  mfc  atl 


5
LPCSTR,LPCTSTR和LPTSTR
什么区别LPCSTR,LPCTSTR和LPTSTR? 为什么我们需要这样做将字符串转换为LV/ _ITEM结构变量pszText: LV_DISPINFO dispinfo; dispinfo.item.pszText = LPTSTR((LPCTSTR)string);
109 c++  windows  visual-c++  mfc 

4
使用dllexport从DLL导出功能
我想要一个从C ++ Windows DLL导出函数的简单示例。 我想查看标题,.cpp文件和.def文件(如果绝对需要)。 我希望导出的名称没有修饰。我想使用最标准的调用约定(__stdcall?)。我想要使​​用__declspec(dllexport),而不必使用.def文件。 例如: //header extern "C" { __declspec(dllexport) int __stdcall foo(long bar); } //cpp int __stdcall foo(long bar) { return 0; } 我试图避免链接程序在名称中添加下划线和/或数字(字节数?)。 我可以不支持dllimport并dllexport使用相同的标头。我不需要有关导出C ++类方法的任何信息,而只希望获得c样式的全局函数。 更新 不包括调用约定(并使用extern "C")会为我提供我喜欢的导出名称,但这意味着什么?是什么默认的调用约定我得到了什么pinvoke(.NET),声明(vb6)并GetProcAddress可以预期?(我猜GetProcAddress这取决于调用者创建的函数指针)。 我希望此DLL在没有头文件的情况下使用,因此我真的不需要花哨的钱就#defines可以使调用者使用该头。 我可以接受的答案是,我必须使用*.def文件。

12
Visual Studio是否支持新的C / C ++标准?
我一直在阅读有关C99和C ++ 11以及所有这些非常甜美的东西,这些东西已经添加到语言标准中,有一天可能会很好用。但是,我们目前在用Visual Studio编写C ++的领域中感到苦恼。 该标准中的任何新内容是否都会添加到Visual Studio中,或者Microsoft是否对添加新的C#变体更感兴趣? 编辑:除了接受的答案,我发现了Visual C ++团队博客: http://blogs.msdn.com/vcblog/ 具体来说,其中的帖子: https://web.archive.org/web/20190109064523/https://blogs.msdn.microsoft.com/vcblog/2008/02/22/tr1-slide-decks/ 很有用。谢谢!



10
gettimeofday()是否保证具有微秒级的分辨率?
我正在将一个最初为Win32 API编写的游戏移植到Linux(很好,是将Win32端口的OS X端口移植到Linux)。 QueryPerformanceCounter自程序启动以来,我已经通过提供uSeconds来实现: BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount) { gettimeofday(&currentTimeVal, NULL); performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec); performanceCount->QuadPart *= (1000 * 1000); performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec); return true; } 再加上QueryPerformanceFrequency()恒定的1000000作为频率,可以在我的机器上很好地工作,并为我提供了一个uSeconds自程序启动以来包含的64位变量。 这是便携式的吗?我不想发现以某种方式或类似方式编译内核时,它的工作原理有所不同。我可以将其移植到Linux以外的其他软件上,这很好。

11
致命错误:Visual Studio中出现“无目标体系结构”
当我尝试在Win32或x64模式下使用Visual Studio 2010编译我的c ++项目时,出现以下错误: >C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(135): fatal error C1189: #error : "No Target Architecture" 我的预处理器定义说WIN32; _DEBUG; _CONSOLE;%(PreprocessorDefinitions) 是什么导致此错误,我该如何解决? // winnt.h: lines 127-136, MSVS says this is an inactive preprocessor block #if defined(_WIN64) #if defined(_AMD64_) #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD ) #elif defined(_IA64_) #define PROBE_ALIGNMENT( _s ) (TYPE_ALIGNMENT( …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.