【发布时间】:2013-03-04 21:13:12
【问题描述】:
我在 Windows 7 上使用 Visual Studio 2010,用 C++ 编写。在我的程序中,我有一个 .dll,其中包含我在程序中经常使用的一堆函数。最近,我在更改 .dll 时遇到了很多麻烦。每当我更改在我的 DLL 中定义的函数时,当程序构建和运行时,更改似乎都不会生效。也就是说,我相信每次成功构建(或重建)我的解决方案时,我的 DLL 都没有正确更新。
如果我尝试在 .cpp 文件(代替 DLL 对用户隐藏的函数)中的任何函数中设置断点,Visual Studio 会告诉我代码不会被执行并且断点不能在那里设置。不过,今天早些时候我可以在那里设置断点。
另外,我的一个函数将“Frame Received”打印到 Visual Studio 的调试输出中。这种情况仍在发生,因此很明显,此功能的某些版本仍在工作。所以我想尝试让它连续打印 10 次“Frame Received”,看看我的更改是否真正生效。奇怪的是,即使在构建和清理/重建之后,程序仍然只写一次“Frame Received”,就好像它只是忽略了我的更改。
我不确定是什么原因造成的,但正如我所说,我的 .dll 似乎没有更新和/或 Visual Studio 使用的是旧版本的 .dll 而不是最新版本。无论哪种方式,我都不确定如何解决这个问题。有什么想法吗?
编辑:我之前忘了提到,在调试时,我试图进入其中一个我无法在其中放置断点的函数,我收到了以下错误消息:
【问题讨论】:
-
这太奇怪了,好像你错过了一些非常基本的东西。重建后,dll文件是否有正确的创建日期? IE。现在?您确定这是您的应用程序正在使用的文件吗?您可能在 PATH 的某处有相同的 dll。用dependency walker检查它。
-
旧 VimbaBridgeAPI.dll 在 .dlls 搜索路径中的某处? SYSTEM32等
-
好的,在重建解决方案并检查创建日期和时间后,它显示 1 小时前。所以这意味着我猜它没有正确更新。如何强制它再次更新 dll?
-
删除旧文件即可。删除后就很难继续存在了。
-
在删除旧文件并重建解决方案后,它仍然没有生成另一个 .dll 文件。啊啊
标签: c++ windows visual-studio-2010 debugging dll