【问题标题】:Windows 10 Visual Studio 2013 build error for Windows 8.1 projectWindows 8.1 项目的 Windows 10 Visual Studio 2013 构建错误
【发布时间】:2016-01-29 00:51:51
【问题描述】:

使用 VS2013 在 Windows 10 上构建 win8.1 项目时出现错误

'RAIG3D.Windows.exe' (Win32): Loaded 'C:\Windows\SysWOW64\mswsock.dll'. Symbols loaded.
Debug Assertion Failed!

Program: ...win8.1-universal\Debug\RAIG3D.Windows\AppX\RAIG3D.Windows.exe
File: f:\dd\vctools\crt\crtw32\misc\dbgheap.c
Line: 1424

Expression: _pFirstBlock == pHead

我在链接到项目的.dll 中使用winsock2.h。它是我正在尝试编写的自定义网络库。它在windows 分支上

https://github.com/damorton/libsocket/tree/windows

这个库适用于win32调试程序很好,但对于win8.1它给出了上述错误

【问题讨论】:

    标签: c++ visual-studio-2013 windows-8.1


    【解决方案1】:

    这不是构建错误,而是运行时错误。具体来说,一个断言已经触发。这就是消息告诉您的内容:

    调试断言失败!

    刚刚执行了一段代码,它使用assert 宏的一些变体来捕获可能的错误。它抓住了一个。这很好。更好的是,它会告诉您 在哪里 触发了断言宏:

    程序:...win8.1-universal\Debug\RAIG3D.Windows\AppX\RAIG3D.Windows.exe
    文件:f:\dd\vctools\crt\crtw32\misc\dbgheap.c
    线路:1424

    那是你的程序,但不是你的代码文件。因此,这不是您编写的断言,而是 Microsoft 开发人员放入其 C 运行时库例程中的断言。具体来说,在dbgheap.c 文件中,这表明它与调试堆有关,调试堆用于在调试构建中分配内存。

    该消息还告诉您表达式是什么,结果出乎意料地为假,因此触发了断言:

    表达式:_pFirstBlock == pHead

    看起来两个假定相等的指针实际上相等。

    如果您在弹出的消息框上按下“重试”按钮,您将能够使用调试器闯入代码并在上下文中查看有问题的代码行。您还可以查看完整的调用堆栈。

    调用堆栈有助于在调用触发此断言的库代码之前查看 您的 代码的哪一行正在执行。此断言是 CRT 作者在其内存分配例程中放入的内部一致性检查。如果你触发了它,那么你在你的应用程序内部做了一些严重的错误。

    如果我在没有比我更多的信息的情况下冒险猜测,我猜你可能试图混合引用不同版本 CRT 的可执行文件和库。这是不受支持的,可能会导致严重的问题。不同版本的 CRT 具有不同的对象大小、内存布局、静态变量等。这次你很幸运,它被断言捕获了。检查您的所有项目是否针对相同版本的 CRT,包括生成 DLL 和 LIB 的项目。从头开始完全重建以确保它们都已更新。

    【讨论】:

    • 我知道我的代码中的错误在哪里。我编写了一个自定义网络库,它使用 linux 和 windows 的套接字,所以它在某个地方。如果我错过了什么,你能告诉我吗? github.com/damorton/libsocket
    • 我也认为这与我没有为 windows 输入 SOCKET 并使用 int 代替套接字有关
    • 我现在正在开发 windows 分支,所以它会在那里。
    • 问题在于 CMake 为 windows8.1 项目生成项目文件,但不是为商店生成项目文件。为 WindowsStore 和版本 8.1 传递参数创建了正确的构建文件。然后使用 CMake 创建的更新 CRT 配置重新构建 dll。这也需要为 Windows 10 项目完成。
    猜你喜欢
    • 1970-01-01
    • 2015-11-14
    • 2017-05-26
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    相关资源
    最近更新 更多