【问题标题】:visual studio 2013 release compilation dont open filesVisual Studio 2013 发布编译不打开文件
【发布时间】:2015-07-19 20:26:20
【问题描述】:

我已经搜索了其他答案,但我没有找到解决方法,我无法理解为什么会发生这种情况,有人可以帮忙吗?

当我使用调试模式编译时,一切运行正常,即使我将调试配置从多线程调试 DLL (/MDd) 更改为多线程 DLL (/MD),但是当使用发布程序编译时尝试打开文件

std::ofstream inFile(fileNamePath, std::ios_base::app | std::ios_base::out);

不知道还有多少其他错误,因为当程序开始运行时,他会打开一个配置文件并崩溃。

此消息在等待时间出现

LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library

当程序开始运行时,这会在调试时发生

'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wsock32.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\crypt32.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120d.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ws2_32.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msasn1.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\nsi.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Symbols loaded.
'Servidor.exe' (Win32): Loaded 'C:\Windows\SysWOW64\bcryptprimitives.dll'. Symbols loaded.
First-chance exception at 0x777CDF63 (ntdll.dll) in Servidor.exe: 0xC0000005: Access violation writing location 0x00000014.
Unhandled exception at 0x777CDF63 (ntdll.dll) in Servidor.exe: 0xC0000005: Access violation writing location 0x00000014.

所有其他文件均已配置多线程调试 DLL (/MDd) 用于调试,多线程 DLL (/MD) 用于发布。

【问题讨论】:

  • 您是否链接了任何第三方库?
  • inFile(即我猜的输入文件)以及 append + out IO 操纵器,对我来说似乎很奇怪..
  • 已经解决,其他带有#pragma comment(lib, "MSVCRTD.lib") 的 cpp 文件,当编译版本和程序现在运行良好但仍然有时我没有看到只是更改为 "MSVCRT.lib"警告 LNK4098:defaultlib 'LIBCMT' 与其他库的使用冲突;使用 /NODEFAULTLIB:library。

标签: c++ visual-studio-2013


【解决方案1】:

我有根据的猜测,您正在混合调试和发布配置。

尝试在没有优化的情况下使用Multi-threaded DLL(就像你所做的那样)编译你的代码,这样你就可以得到一个可以调试并使用相同 CRT 的程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-01
    • 2015-06-12
    • 2015-01-27
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多