VS 中的 C++ 端口:新项目崩溃(相同的文件和设置)
Posted
技术标签:
【中文标题】VS 中的 C++ 端口:新项目崩溃(相同的文件和设置)【英文标题】:C++ Port in VS: new project crashes (same files & settings) 【发布时间】:2014-06-30 11:37:06 【问题描述】:我正在尝试将代码从初步项目移动到新项目(均在 Visual Studio 2012 下制作)。
原来的应用程序是 控制台应用程序,我希望新的应用程序是 Windows 应用程序。我创建了一个空项目并移动了文件/设置了库路径。
这是一个带有着色器的简单 OpenGL 程序。
编辑:
即使我切换回创建控制台应用程序具有相同的 .vcproj 属性,我也会在发布和调试时遇到致命错误。 您可以在下面找到它们。
为什么我的程序会崩溃?所有库路径都设置得很好,因为它与具有相同文件的先前项目的设置相同(在不同的解决方案中)。
错误
释放崩溃位置(在dbghook.c 中的#ifdef _DEBUG 之外 文件)
int _debugger_hook_dummy;
__declspec(noinline)
void __cdecl _CRT_DEBUGGER_HOOK(int _Reserved)
/* assign 0 to _debugger_hook_dummy so that the function is not folded in retail */
(_Reserved);
_debugger_hook_dummy = 0;
调试崩溃位置 (fread.c) - 出现弹出错误窗口 (调试断言失败):
_VALIDATE_RETURN((stream != NULL), EINVAL, 0);
【问题讨论】:
为什么不使用向导创建一个新的 Windows 应用程序并放入您的文件中呢?或者创建一个console应用和一个windows应用,比较一下vcproj有什么区别? 这听起来更像是一个库兼容性问题。确保您使用的 GLUT 版本与您的 VC++ 版本(编译器、链接器和运行时库)兼容。 我进行了比较(与 Araxis),以便 .vcproj 文件中的每个参数在 2 个控制台应用程序之间匹配。还是不能让新项目运行起来…… 【参考方案1】:在将我的源文件分成几部分后,我设法调试了它。问题不在于端口(抱歉)。
我在处理可执行文件的位置时遇到了一些小问题:Visual Studio 默认将它们放在 SolutionDir/DebugorRelease 中,而我在 ProjectDir/DebugorRelease 中查找它们。
但主要问题来自功能的变化。 有一个我用来加载纹理的边文件,它很旧,使用 fopen 打开文件。
在收到警告后,我将所有出现的 fopen 更改为 fopen_s,并进行了所有必要的修改。这就是程序崩溃的确切位置。
我放回 fopen 版本,检查文件位置,然后它返回执行(不是在 Visual Studio 中,而是仅通过命令行,就像原始项目一样)。这是针对控制台应用程序的。
为了使它成为一个 Windows 应用程序,下面这行代码完成了这项工作,而这一次,虽然只是命令行,但它确实可以工作。
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
【讨论】:
以上是关于VS 中的 C++ 端口:新项目崩溃(相同的文件和设置)的主要内容,如果未能解决你的问题,请参考以下文章