无法在 Visual C++ 2013 中“转到定义”

Posted

技术标签:

【中文标题】无法在 Visual C++ 2013 中“转到定义”【英文标题】:Cannot "Go To Definition" in Visual C++ 2013 【发布时间】:2015-06-09 02:16:57 【问题描述】:

在 Visual C++ 2013 Professional 中,当我在 afxwin.h 头文件中右键单击 MFC 函数 CWinApp::Run() 并在上下文菜单中选择“转到定义”时,什么也没有出现。 this function's MSDN article 上也没有该定义。如何解决问题并找到定义?什么会导致定义不可用?

【问题讨论】:

【参考方案1】:

您无法转到 MFC 中存在的函数的定义,您无权访问调试信息。通常,您只能访问您拥有源代码的函数的定义。您可以访问声明,这就是您在头文件中看到的内容。

就您遇到的一些问题而言,我倾向于您自己的代码有问题,而不是 MFC 中的问题。

【讨论】:

如果没有函数的定义甚至一些细节,我无法覆盖它们,即Overridable CWinApp Member Functions:InitInstanceRunExitInstanceOnIdle。然而,这是编写程序所必需的,即覆盖InitInstance 以包含CFrameWnd 或派生类以及对ShowWindow 的调用。我想覆盖其他函数以获得PeekMessage 功能而不是GetMessage。如果不知道这些函数的作用以及清理的工作原理,我就无法做到这一点。 上网查了一下,专业版应该可以看的。你在使用调试库吗? This person 似乎也有同样的问题,而且他们的符号库没有正确加载。 我不知道。我怎样才能知道? 首先,如果您点击我发布的链接,请查看为 MFC 加载了哪些模块。如果库名称不以“d”结尾,则它可能不是调试库。如果这不起作用,"I was able to get VS2010 to load the symbol files by going to Tools->Options->Debugging->Symbols and select checkbox "Microsoft Symbol Servers" and now Visual Studio loads PDBs automatically. "。试试看。 @CodeBricks:为了找出函数的作用,您必须阅读文档中该函数的外部规范。为此目的,查看函数的定义毫无用处,因为您无法知道其行为的哪些部分包含在其外部规范中,以及哪些部分只是您不能依赖的实现细节。跨度> 【参考方案2】:

您可以在任何 MFC 函数上设置断点,然后对其进行调试,然后单步执行该函数(F11 key 或“Step in”命令)。大多数情况下,这将带您直接访问源代码。

在这种情况下,您可能会被重定向到 VC 2013 的此文件:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\mfc\appcore.cpp

【讨论】:

【参考方案3】:

控制台显示什么错误?

我能说的只是你应该在一个while循环中调用那个函数,像这样:

while(CWinApp::Run())
    //application code goes here...

【讨论】:

没有编译错误。我只想找到定义,却找不到。

以上是关于无法在 Visual C++ 2013 中“转到定义”的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Visual Studio C++ 2013 中 #include freeglut 的 OpenGL

Visual Studio C++ 2005-2013 中的智能感知缺少函数定义

无法在 Visual Studio 中将 Visual C++ 运行时包引用添加到 Windows Phone 项目

无法在 Windows 7 机器上的 Microsoft Visual C++ 2010 中运行 OpenCV

visual c++ 2012 应用程序无法在 windows xp 下运行 - 已更新

无法运行简单的 Visual Studio 2013 项目