与MinGW相比,我在MSVC编译器中遇到了一种非常奇怪的行为。 我正在尝试为Windows(.dll)构建一个库,以包含在更大的MSVC项目中。
我的图书馆有108个.c文件及其.h文件。 .c文件的平均大小为3.3 KB(大小从1 KB到9.7 KB不等)。每个.c文件只是一个基于双输入输出一个双精度的等式。例如:
double value_p3_D2(double a, double b, double c, ... (about 30 inputs)){
double outval = -(-(sin(a) * sin(b) - cos(a) * cos(b)) * sin(d * (m2 *
(-sin(f) * g + cos(g) * g) * (cos(c) ..... up to 9.7 kB of equation text;
return outval;
}
它在不到20分钟内使用MinGW 4.8 32位进行编译,生成的DLL大小为611 KB(每个.c文件的每个目标文件.o,从1 KB到8 KB不等)。
但是,如果我用MSVC 2010 32位编译它,它需要永远。我等了24个小时,它甚至没有处理20%的文件(我通过输出.obj文件检查进度,也从1 KB到8 KB不等)。我并不夸张。
我尝试了一些MSVC编译器开关,例如/ Od,它们禁用了优化,但我没有看到编译时间有任何改进,但是,目标文件的大小是1到2.5MB! 即使我的项目纯粹是C而不使用任何Qt库,我也使用Qt编译。 我用这种方式开关:
QMAKE_CFLAGS_RELEASE -= -O2 #forget about optimizing speed
QMAKE_CFLAGS_RELEASE += -Od #disable optimization
我也尝试了MSVC 2012 64位和MSVC 2013 64位,但我得到了类似的结果。
我是否可以使用任何MSVC编译器开关来提高速度,同时保持较小的尺寸? 我希望有相同的编译时间和结果为MinGW编译器。
任何帮助将不胜感激!
PS:我还看了一下如何将MinGW dll转换为可以在MSVC项目中导入的库: http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs 然而,它看起来并不简单......欢迎任何其他如何做的例子:)