В настоящее время я работаю над очень старой кодовой базой, пытаясь решить проблему сборки. В настоящее время мы строим проекты, используя инструкцию командной строки 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 создает папку за папкой.
Задача ещё не решена.
Других решений пока нет …