jjzjj

如何在VS2019编辑器的第一行默认添加:#define _CRT_SECURE_NO_WARNINGS 1

一,为什么要添加#define_CRT_SECURE_NO_WARNINGS1?因为scanf函数是C语言函数,但在VS2019中,不能直接用(只能用scanf_s代替,但此函数在其他C语言编辑器不支持,所以不推荐),只有在第一行添加了才可以用,但是每次都添加太麻烦,所以在第一行默认添加就会非常方便。二,如何添加#define_CRT_SECURE_NO_WARNINGS1?0,安装前 1,首先在安装vs2019的磁盘中找到安装vs2019的文件夹,搜索newc++file.cpp,打开文件所在位置,复制文件的绝对路径 2,搜索记事本,(只能)以管理员的身份运行(直接打开,最后保存会显示没有权

api-ms-win-crt-conio-l1-1-0.dll文件找不到的完美解决方法

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个api-ms-win-crt-conio-l1-1-0.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现api-ms-win-crt-conio-l1-1-0.dll丢失要怎么解决?一、手动从网站下载单个dll文件1、从下面列表下载ap

c++ - 分发 VC++ 运行时文件的正确方法

我有一个MFC应用程序,我正在尝试打包以进行部署。它似乎取决于文件“msvcr90.dll”、“msvcp90.dll”和“mfc90.dll”。分发这些文件的正确方法是什么?我无法使用合并模块,因为我的安装程序不支持它们。我知道我可以运行VCRedist_x86.exe,但出于各种原因我不想这样做。据我所知,我唯一的选择是将文件安装为私有(private)并行程序集。这是正确的吗?根据http://msdn.microsoft.com/en-us/library/ms235317(VS.80).aspx安装私有(private)程序集的正确方法是将“Microsoft.VC90.CR

c++ - 无法在 Visual Studio 2013 调试器中调试 CRT 源文件

我刚刚安装了VisualStudio2013并尝试创建一个“HelloWorld”控制台C++应用程序。我正在尝试通过CRT源代码进行调试,但我无法这样做。我注意到源文件仍安装在ProgramFiles\VisualStudio位置,但调试器无法找到它们。我曾经能够在VisualStudio2012中执行此操作。出了什么问题? 最佳答案 从VisualStudio2013开始,VisualC++库的PDB文件将不再随VS产品一起提供。它们将只能通过Microsoft符号服务器使用。因此,您需要在VisualStudio选项中设置正确

c++ - 用于应用程序本地部署的 MSVC 2015 通用 CRT

已宣布通用CRT将是一个可重新分发的DLL,这样应用程序本地部署仍然是可能的。我已经安装了VisualStudio2015ExpressEdition,我在SDK目录中寻找ucrtbase.dll,但找不到任何东西。我查看的目录是“C:\ProgramFiles(x86)\MicrosoftSDKs\WindowsKits\10”,但在“Microsoft.UniversalCRT.Debug”下只有CRT的调试版本。我不想从我的系统中复制任何DLL,我总是只打包来自“Redist”目录的文件。因此,例如(与以前版本的MSVC一样),我使用x86构建从“C:\ProgramFiles(

c++ - Visual Studio 2015 : Compile C/C++ without a runtime library

有没有一种方法可以在不使用任何运行时库的情况下使用VisualStudio2015编译C/C++?我需要在没有运行时库的情况下进行编译,因为我正在创建自己的运行时库(用于我的操作系统)。在C/C++->CodeGeneration->RuntimeLibrary上有选项但我想要一个显示“无”的选项。我知道失去了CRT中的许多功能。 最佳答案 要在没有C运行时库(CRT)的情况下编译您的应用程序,请使用/MT、/NODEFAULTLIB链接器选项并在Linker->Advanced处重新定义入口点->入口点在您的代码中定义的函数,例如

c++ - 如何强制 C++ 编译器使用特定的 CRT 版本?

我正在使用VS2008开发默认使用CRT版本9的COMdll但我使用的是与新CRT不兼容的TSF(文本服务框架)。我认为解决方案是使用兼容版本,那么如何指定CRT版本? 最佳答案 我衷心地支持不要手动更改链接所针对的CRT版本的建议。但是,如果由于某种原因(我无法想象)这对您来说是正确的做法,那么这样做的方法是更改​​manifest为您的项目。首先确保list不是在每次构建时生成(在VS2005上:配置属性/链接器/list文件/生成list),因为它会覆盖您的手动更改。还要确保在那里启用了隔离。接下来,找到list文件-应该位于

c++ - C++ 中的安全 cookie 是什么?

我从Google了解到它用于控制应用程序级别的缓冲区溢出,并由CRT调用。它还说"本质上,在进入一个受溢出保护的函数时,cookie被放入堆栈,而在退出时,堆栈上的值将与全局cookie进行比较。它们之间的任何差异都表明发生了缓冲区溢出并导致程序立即终止。”但我不太明白它是如何工作的?请帮忙。 最佳答案 “cookie”基本上只是一个任意值。因此,基本思想是在调用函数之前将选择的值写入堆栈。虽然它可能不是一个很好的值,但我们可以任意选择0x12345678作为值。然后调用函数。当函数返回时,它返回到堆栈中的正确位置,并将该值与0x1

c++ - 线程的创建,CRT和DLL的是怎么实现的?

所以我明白CreateThread和CRT会导致内存泄漏,信号不起作用,应该使用_beginthread或_beginthreadex函数。在编写应用程序时这一切都很好,但是那些为其他应用程序编写dll等的人呢(无论是普通的cdll、com对象、插件等)。无法保证调用DLL的线程是如何创建的,即使他们使用__beginthread(ex)也很有可能打赌他们有不同的CRT实现\版本。那么程序员应该做什么呢?不会用CRT?生成一个内部线程并将所有工作卸载到该线程(不将CRT与调用线程一起使用)?使用DllMain和附加/分离的一些技巧来正确设置和关闭所有线程,无论它们是如何创建的?

windows - WinAPI Shell API 与基本 API 和 CRT 函数有何不同?

我正在通读Windows进程API,留下了三个问题:基本API和shellAPI有什么区别?我读到shellAPI包装了基本API,例如ShellExecute()和ShellExecuteEx()包装了CreateProcess()但无法理解其中的区别。基本API和ShellAPI与CRT函数(C运行时)有何不同。同样,exec()和spawn()CRT函数包装了基本API的CreateProcess()。我知道我可以通过编译和链接正确的头文件来直接使用代码中的基本API和CRT函数。如何使用ShellAPI? 最佳答案 1)基础