Я пытаюсь скомпилировать программу, которая работала с компилятором Visual C ++ 6.0.
Теперь, я компиляции с помощью компилятора в Visual Studio 2010. Она компилирует, но моя программа падает на присвоение переменной:
sapHigh = ctx->saphigh;
В коде ассемблера (с помощью Visual Studio Debugger), эта инструкция есть:
00410DF3 mov eax,dword ptr [ctx]
00410DF6 mov ecx,dword ptr [eax+20h]
00410DF9 mov dword ptr [sapHigh],ecx
Инструкция "MOV EAX, DWORD PTR [CTX]" вернуться 0x00000000 в EAX и аварийное завершение работы программы. Но отладчик может видеть реальное значение указателя CTX, который «0x0172287a». Если я изменю значение регистра eax на его реальное значение «0x0172287a», программа все еще будет работать до следующего назначения.
Кто-нибудь знает, почему эта команда не работает? Это проблема с параметрами компиляции?
Спасибо за вашу помощь.