繁体   English   中英

本地多目标化会以何种方式影响构建的输出

[英]In what ways does native multi-targeting affect the output of a build

我有一个由c ++和c#项目组合而成的大型解决方案,其中大多数输出​​dll。 我们还有一个可执行文件,取决于这些项目的输出。 我们的整个解决方案当前是在VS2005中构建的。 出于多种原因,我们必须将v80作为构建目标,但我们终于找到了转移到2010 IDE的时间。

当我们在2010年进行构建时,我们的解决方案都可以正常编译,但是在运行应用程序时遇到访问冲突。 在许多情况下都会发生此异常,但是总是在代码中同时发生-它也显示为“用户回调期间遇到的异常”。 如果我们将抛出异常的代码行编辑掉,它只会移动到其他地方,这很有意义。 问题所在的场景如下:

所有dll和exe均针对v80工具集于2010年构建。 所有dll的版本都建立于2005年,exe的版本则是针对v80工具集构建于2010年。

值得注意的是,如果我们使用2010年内置的dll(针对v80),但使用2005年内置的exe,则一切正常。

那么我的问题是:使用v80工具集的2005年版本的输出与2010年版本的输出之间有什么区别?

上面的内容可能取决于是否可以完全匹配构建的命令行参数(即c ++和链接器配置),因为我们可能还没有完全正确。 如果需要,我可以链接2005年和2010年的设置。

任何帮助将非常感激。

更新:我最近在2005年创建了一个非常简单的应用程序,由dll和exe组成。 该dll具有静态__declspec(dllexport)int add(int a,int b)函数。 exe是一个简单的控制台应用程序,可从dll调用添加功能。

然后,我将其移植到VS2010并将其设置为v80工具集。 构建此文件会生成一个与原始文件大小相同的dll,但是exe的大小要大4KB。 我正在使用dumpbin尝试找出原因,但是目前我还不太清楚。 如果其他任何人都可以在这种简单情况下确定exe大小不同的原因,则可能有助于解决我的整体问题

现在已解决此问题,此问题是由默认情况下启用的DEP引起的。 我可以为其他任何人确认,如果您使用相同的编译器和链接器设置,则生成的输出应该并且将完全匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM