C ++中的文件路径在我的磁盘上找不到断言

时间:2013-04-27 06:41:16

标签: visual-studio visual-c++

我使用Visual C ++构建一个包含一些开源项目的DLL,但是当我收到错误时,它会显示:

enter image description here

“f:\ dd \ vctools \ crt_bld \ self_x86 \ crt \ src \ vsprintf.c”是如何出来的?我甚至没有“f”磁盘。我搜索过我的源代码,并没有这样的字符串。

对此有何想法?

4 个答案:

答案 0 :(得分:2)

@Dcoder表示的文件路径不是来自您的磁盘。

此消息来自您与程序链接的CRT(C运行时库)。 MSVCRT.DLL(或其版本)

当Microsoft编写源代码来创建此库时,他们会在其中构建名为Assertions的特殊代码。此代码(当您链接到库的调试版本时)检查您发送到库中的函数的参数,并将有用的消息传递给您。

在这种情况下,您调用了printfsprintf等函数,最终进入了一个名为vsprintf.c的微软文件中的Microsoft函数。< / p>

这个文件是在Microsoft内部编译库时,它是在F:驱动器INSIDE Microsoft上完成的。它不会存在于您的磁盘上。

编辑:如果您将代码添加到问题中,我们可以帮助您找到发生这种情况的位置。

答案 1 :(得分:1)

正如其他人在评论中指出的那样,断言对话框中描述的路径是抛出断言的源文件的路径。在这种情况下,CRT sprintf函数抛出一个断言。

'f:...'路径不是指你自己机器上的路径:它是将文件编译成CRT DLL的机器上源文件的路径。

答案 2 :(得分:0)

这是一个调试断言失败 - 您显然已将NULL - 值传递给sprintf - 族的函数。
您应该检查您传递给此类函数的任何NULL - 值的源代码。

答案 3 :(得分:-1)

这是安装Common Run Time(CRT)框架的地方。 vsprintf.c是CRT的一部分,该DLL中的某个东西调用了一个带有空格式字符串的sprintf()函数。