我有一个由 c++ 和 c# 项目组合而成的大型解决方案,其中大部分输出 dll。我们还有一个可执行文件,它取决于这些项目的输出。我们的整个解决方案目前是在 VS2005 中构建的。由于多种原因,我们的构建必须针对 v80,但我们终于找到时间迁移到 2010 IDE。
当我们在 2010 年构建时,我们的解决方案都可以正常编译,但是在运行应用程序时我们遇到了访问冲突。此异常发生在许多场景中,但始终在代码中的同一点发生 - 它还显示为“在用户回调期间遇到的异常”。如果我们编辑掉抛出异常的代码行,它只是移动到其他地方,这是有道理的。我们遇到问题的场景如下:
2010 年针对 v80 工具集构建的所有 dll 和 exe。所有 dll 的构建于 2005 年,exe 构建于 2010 年,针对 v80 工具集。
值得注意的是,如果我们使用 2010 年构建的 dll(针对 v80)但 2005 年构建的 exe,一切正常。
那么我的问题是:2005 年构建的输出与使用 v80 工具集的 2010 年构建的输出有什么区别?
以上可能取决于是否可以完全匹配构建的命令行参数(即,c++ 和链接器配置),因为我们可能还没有完全正确。如果需要,我可以链接 2005 年和 2010 年的设置。
任何帮助将非常感激。
更新:我最近在 2005 年创建了一个非常简单的应用程序,由 dll 和 exe 组成。dll 有一个函数 static __declspec(dllexport) int add(int a, int b)。exe 是一个简单的控制台应用程序,它从 dll 中调用 add 函数。
然后我将其移植到 VS2010 并将其设置为 v80 工具集。构建它会产生一个与原始大小相同的 dll,但 exe 大 4KB。我正在使用垃圾箱来尝试找出原因,但目前我不太清楚。如果其他人可以在这个简单的情况下确定为什么 exe 的大小不同,这可能有助于解决我的整体问题