Занимаюсь портированием своего продукта на Win-64 платформу.
Мой продукт использует сторонние библиотеки, которые собираются из исходных кодов вместе с моим проектом
в процессе билда.
Используются там типы size_t. Проблем в этом непосредственно не возникает. Как я понимаю size_t имеет размер 32 бита для
32-Windows (MSVC2005) и 64 бита для 64-битной Windows (MSVC2005).
Проблема в том, что этот тип преобразается, например, к unsigned int или к просто int.
Есть ли еще общее, готовое решение для подобных проблем? Или же его не существует?
Поделитесь знаниями....
GC>Используются там типы size_t. Проблем в этом непосредственно не возникает. Как я понимаю size_t имеет размер 32 бита для GC>32-Windows (MSVC2005) и 64 бита для 64-битной Windows (MSVC2005). GC>Проблема в том, что этот тип преобразается, например, к unsigned int или к просто int.
Да, известная ловушка при переходе на 64 бита. Решение простое — не класть size_t в int.
Коллега меня опередил, но я поподробнее отвечу.
Так как это Вам прямиком к нам нужно. Наша компания создала программный продукт как раз для тех, кто переносит свои приложения на 64-битные системы или разрабатывает новые 64-битные решения.
Viva64 — это статический анализатор кода, созданный с целью упростить переход на 64-битные системы, и тем самым сократить необходимые для этого издержки. Инструмент Viva64 работает с кодом программ на языке Си/Си++ предназначенных для 64-битной операционной системы Windows. Viva64 представляет собой подключаемый модуль, интегрирующийся в среду разработки VisualStudio 2005/2008.
Люди, которые советуют __w64 и не класть size_t в int совершенно правы. К сожалению, эти советы мало чем могут помочь, когда имеется конкретный проект, данный нам в ощущение и который требуется перенести на 64-битую систему. Слово __w64 замучаешься расставлять, да и работает механизм "Detect 64-Bit Portability Issues" (ключ /Wp64) в VC++ на тройку с минусом. Если кто хочет возразить, то предупреждаю, я готов аргументировано обосновать. А найти превращение size_t в int не так просто, как может показаться. Очень часто предупреждение экранируется явным использованием приведением типа. Для поиска таких мест в Viva64 имеется специальный режим.
С уважением, Андрей Карпов.
ООО "Системы программной верификации" www.Viva64.com
Здравствуйте, Analytic2007, Вы писали:
A>Здравствуйте, GhostCoders.
A>Коллега меня опередил, но я поподробнее отвечу. A>Так как это Вам прямиком к нам нужно. Наша компания создала программный продукт как раз для тех, кто переносит свои приложения на 64-битные системы или разрабатывает новые 64-битные решения.
Продукт хороший, но для меня он слишком много стоит. Наша компания очень мала (~3 человека)