Roland F. Ответов: 1

Различные результаты в debug+release версии visual studio C++ 2010, хотя те же параметры проекта для release+debug


Я разработал сложный алгоритм много лет назад. Теперь, спустя годы, мне даже трудно понять его структуру. Но я хочу использовать его сейчас как часть нового проекта. Пытаясь интегрировать этот код в новый проект, я столкнулся с причудливым явлением.

Если я компилирую код с помощью VC++6, алгоритм работает правильно, в отладочной и релизной версии. Если я использую выражение "неправильный" в следующем здесь и сейчас, это не означает, что алгоритм дает совершенно неправильные результаты, но результаты, которые намного хуже по качеству, как я бы назвал его "правильным".

Если я компилирую тот же код с помощью Visual Studio C++ 2010, алгоритм работает неправильно (= результаты низкого качества) в версии Releaase. Тот же эффект (плохие результаты), если я запускаю exe-файл, который был создан с помощью Debug-Compile и Link. Но если я запускаю программу в IDE VS2010, начиная с "Debug->Start without debugging = F5", она дает правильные результаты (= хорошее качество, те же результаты, что и с Debug+Release в VC++6). Как такое возможно ? Конечно, IDE запускает Debug-exe-файл по-другому, как если бы он был запущен вручную из командной строки. Какова настройка, чтобы получить эти результаты также и в релизной версии ?

Теперь я изменил все настройки проекта, чтобы они были похожи: Release = Debug. Тем более я отключил все оптимизации. Но все равно есть эффект, что я получаю правильные результаты только в том случае, если запускаю программу с помощью Debug->Start в IDE.

Поэтому я не могу понять этот эффект, я схожу с ума из-за этого, потому что я пробовал все, чтобы соответствовать этому в течение последних трех ночей, но безуспешно. Я также попробовал его с Visual Studio 2017, с тем же результатом, что и в VC++ 2010.
Я также попытался связать lib-файл со старым кодом, который был скомпилирован и связан VC++6, в новом проекте в VC++ 2010. Но в действительности это также приводит к неверным результатам (результатам плохого качества).

Мне нужна версия выпуска, которая может быть запущена в Windows 10 с правильными (хорошими) результатами. Я не могу получить это с VC++6, так что мне нужно решение для этого причудливого эффекта, пожалуйста.

Что я уже пробовал:

I have also tried to link a lib-file with the old code, that was compiled and linked by VC++6, in the new project in VC++ 2010. But in effect also this produces incorrect results (bad quality results).

phil.o

Трудно сказать :)
Возможно, попробуйте деактивировать возможные функции оптимизации в сборке выпуска и посмотреть, не изменится ли что-нибудь?

1 Ответов

Рейтинг:
1

Patrice T

Цитата:
Различные результаты в debug+release версии visual studio C++ 2010, хотя те же параметры проекта для release+debug

Знаете ли вы, что 1 разница между отладочной и выпускной версиями заключается в том, что в отладочной версии переменные инициализируются, чего нельзя сказать о версии выпуска.
В противном случае, если у вас есть неинициализированная целочисленная переменная, отладочная версия инициализирует ее до 0, в релизной версии начальное значение будет непредсказуемым, случайным.
Но не видя кода ...