VS中的C ++端口:新项目崩溃(相同文件和设置)

时间:2014-06-30 11:37:07

标签: c++ opengl visual-studio-2012 console-application windows-applications

我正在尝试将代码从初步项目移动到新项目(均在Visual Studio 2012下完成)。

原始版本已作为控制台应用程序制作,我希望新版本是 Windows应用程序。我创建了一个空项目并移动了文件/设置了库路径。

这是一个带着色器的简单OpenGL程序。

编辑:

即使我切换回创建具有相同.vcproj属性的控制台应用程序,也会发生在Release和Debug上的致命错误。 你可以在下面找到它们。

为什么我的程序会崩溃?所有库路径都设置得很好,因为它与使用与DID相同的文件的先前项目所使用的设置相同(在不同的解决方案中)。

错误

释放崩溃位置(在 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);

1 个答案:

答案 0 :(得分:0)

在部分剪切我的源文件后,我设法调试了这个。问题不在于港口(抱歉)。

我处理可执行文件的位置时遇到了一些小问题:Visual Studio默认将它们放在SolutionDir / DebugorRelease中,而我在ProjectDir / DebugorRelease中查找它们。

但主要问题来自于功能的改变。 有一个我用来加载纹理的辅助文件,这个文件非常陈旧,使用 fopen 来打开文件。

根据我收到的警告,我将所有fopen事件更改为fopen_s ,并进行了所有必要的修改。这是程序崩溃的准确线。

我放回了 fopen version ,检查了文件位置,然后又返回执行(不是在Visual Studio中,而是仅通过命令行,就像原始项目一样)。这适用于控制台应用程序。

要使其成为Windows应用程序,以下行执行此任务,这次,虽然仅限命令行,但它适用于实际。

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )