【发布时间】:2015-02-02 16:36:19
【问题描述】:
在 MSVC 2012 的调试过程中,我尝试从 Watch 窗口调用一些函数,以便将数据转储到文件中。但是,我不断收到此错误:
Function Matrix::Save has no address, possibly due to compiler optimizations.
Matrix 类位于我自己的外部库中。快速检查表明,外部库中的所有方法都没有地址,并且所有从 Watch 调用它们的尝试都会返回此错误,但在头文件中定义的方法除外。主项目中的方法无论在哪里定义都有地址。
当然,整个解决方案都禁用了优化。符号被正常加载。我该如何解决?
【问题讨论】:
-
库是如何链接的?静止的?动态的?如果是动态的,如何加载?
-
它是动态链接的。 “如何加载”是什么意思?
-
@AntonPoznyakovskiy 您可以进行隐式或显式加载。如果是隐式的,那么上面的方法可以正常工作。如果是显式的,那么您需要使用已存储的函数指针进行调用。
-
你可以有一个可配置的硬编码转储方法。以前的监视窗口有问题:stackoverflow.com/questions/16844804/… 另外,它是否为您的 dll 加载了符号?如果不告诉它他们在哪里:msdn.microsoft.com/en-us/library/a3694ts5.aspx
-
还是没有解决办法?我什至不明白为什么我会收到这个错误。
标签: c++ visual-c++ compiler-optimization msvc12