无法在 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:InitInstance
,Run
,ExitInstance
,OnIdle
。然而,这是编写程序所必需的,即覆盖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