我目前正在处理一个非常旧的代码库,试图解决构建问题。目前我们使用 msys 命令行指令构建项目config/build
,这工作正常。但是,如果该项目是在 Visual Studio 2003 中构建的,然后逐步执行,则其行为会略有不同:
Foo
在上面的类定义的全局范围内是以下行:
bool Foo::init = registerDescriptor();
(registerDescriptor()
方法在 中定义Foo
)。
在构建 msys 后逐步执行此行时_initterm
,crt0dat.c(.NET 2003 源代码的一部分)中的方法会拾取这一行,并运行 registerDescriptor 中的代码。
但是,如果我们在 Visual Studio 2003 中构建然后单步执行,则忽略此行。
msys 构建过程使用与 Visual Studio 相同的编译器,我知道的唯一区别是命令行参数和 msys 逐个文件夹构建。