Visual Studio 2017链接器中出现错误C4789 这是64位Windows 7、Visual Studio 2017、C++项目。
当我使用编译器选项Visual Studio 2017链接器中出现错误C4789 这是64位Windows 7、Visual Studio 2017、C++项目。,c++,visual-studio,C++,Visual Studio,当我使用编译器选项/sdl进行发布构建时,我得到了错误4789(如果未启用/sdl,这是一个警告) 我想找出错误的原因。阅读C4789上的MS文档表明,有一个函数指定了操作长度>目标长度。memset、wmemset、memcpy或strcpy。此外,在编译/链接时必须知道这一点,这意味着目标大小和操作长度都是常量 我的困难在于,在我的项目中,命名函数的使用有数百种,而链接器无法识别哪一种是错误的。我还只搜索了那些目的地名为“buffer”的,没有运气的 有没有办法缩小错误原因的范围?您有多少个
/sdl
进行发布构建时,我得到了错误4789(如果未启用/sdl
,这是一个警告)
我想找出错误的原因。阅读C4789上的MS文档表明,有一个函数指定了操作长度>目标长度。memset
、wmemset
、memcpy
或strcpy
。此外,在编译/链接时必须知道这一点,这意味着目标大小和操作长度都是常量
我的困难在于,在我的项目中,命名函数的使用有数百种,而链接器无法识别哪一种是错误的。我还只搜索了那些目的地名为“buffer
”的,没有运气的
有没有办法缩小错误原因的范围?您有多少个262144字节的缓冲区?如果我没有弄错的话,您的错误线索是:corecrt_memcpy_s.h(50):您可能会认为memcpy有问题吗?你可以找到这个源并增加缓冲区大小……@退休Ninja:我找不到任何。@ T T:函数是调用CCORRTHYMEMPYPYS的函数,CycRTLMMECPYPY是C++运行时的一部分。如何在代码中找到有问题的函数?根据MSDN,我命名的所有4个函数都可能出错。这让我认为这是链接器缓冲区和bug,所以我做了一些查找,找到了一个链接,其中包含一个您可能可以使用的解决方案。。。你必须在讨论中仔细阅读找到工作的方法。祝你好运
1>Finished searching libraries
1>Generating code
1>c:\program files (x86)\windows kits\10\include\10.0.10586.0\ucrt\corecrt_memcpy_s.h(50): error C4789: buffer 'buffer' of size 262144 bytes will be overrun; 262143 bytes will be written starting at offset 2
1>All 2506 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.