全球经济放缓 我有一个包含FORTRAN和C++代码的exe,最近修改了它,以链接到一些自定义静态库。exe现在在每个函数中的运行速度都比以前慢了很多(~因子2),即使它在测试运行中没有调用任何新代码。调用图和函数命中计数已在探查器中检查,并验证未调用新代码的断言

全球经济放缓 我有一个包含FORTRAN和C++代码的exe,最近修改了它,以链接到一些自定义静态库。exe现在在每个函数中的运行速度都比以前慢了很多(~因子2),即使它在测试运行中没有调用任何新代码。调用图和函数命中计数已在探查器中检查,并验证未调用新代码的断言,c++,performance,linker,exe,C++,Performance,Linker,Exe,在链接时,现在有许多由新代码引起的“多重定义”警告。但是,优化仍处于启用状态,并且没有修改其他编译器或环境设置。exe并没有明显比以前大,而且两次运行的内存占用量相同 你知道是什么原因导致了这个问题吗?这个问题是由一个螺旋式的包含链引起的,在调用链的下游,某些模块中的优化被无意中关闭了。在这些模块中没有优化是没有意义的,直到链接了头,这是代码的性能关键部分。由于构建顺序的改变,用于包含这些标题的优化模块不再包含这些标题。只是一个想法:听起来好像是设法使用不同版本的运行库,或者同时使用两个或多个版

在链接时,现在有许多由新代码引起的“多重定义”警告。但是,优化仍处于启用状态,并且没有修改其他编译器或环境设置。exe并没有明显比以前大,而且两次运行的内存占用量相同


你知道是什么原因导致了这个问题吗?

这个问题是由一个螺旋式的包含链引起的,在调用链的下游,某些模块中的优化被无意中关闭了。在这些模块中没有优化是没有意义的,直到链接了头,这是代码的性能关键部分。由于构建顺序的改变,用于包含这些标题的优化模块不再包含这些标题。

只是一个想法:听起来好像是设法使用不同版本的运行库,或者同时使用两个或多个版本。对于windows,使用与主应用程序相同的设置重新生成静态库。您应该更准确地了解您的
“多定义”警告。