Самое, наверное, главное отличие х32 от х64 - это количество адресуемой памяти приложением. т.е. приложение , использующее типы данных, основанные на 32-х разрядах может работать с максимальным объемом памяти 2^32 байт, 64 - соответственно 2^64 байт. Что имеется в виду - например у вас есть тип число, в 32 системе максимальное и минимальное значение знакового диапазона от –2147483648 до 2147483647, беззнаковые 4294967295. даже если у вас 64-разрядная ОС - в вашем 32-х разрадном приложении вы не сможете получить, например, счетчик без знака со значением 4294967295+1 - произойдет переполнение разрядной сетки, и если данная ошибка не обработана вашим приложением - произойдет вылет, если обработана без вылета - актуальность такого счетчика очень сомнительна (как пример таких приложений - утилиты для подсчета вашего интернет трафика). для того чтобы ваше 32-х разрядное приложение стало 64-х разрядным, вам необходимо как минимум скомпилировать исходный код вашей программы 64-ным компилятором. При этом совсем ненужно менять , например, все int32 на int64, LLP64 рекомендует это делать только для указателей, чтобы получать доступ, как минимум, к большему объему памяти. Самое главное надо понимать, что вызов 32-х разрядной функции из внешней сборки из 64-х разрядного приложения невозможен (как минимум в windows) в связи с этим если ваша программа использует сериализацию, вызовы внешних функций, сторонние библиотеки - это все тоже необходимо либо перекомпилировать в 64б либо найти уже в 64б виде, а это очень часто бывает почти нереально, и вам придется искать замену используемым функциям. вот на примере сталкера - он использует lua библиотеки в 32б коде, т.е. будет необходимо пересобрать их, а не дай бог если реализации lua64 нет или она кривая - сколько багов надо будет исправить либо сделать костылей, ибо вообще отказаться от этой идеи (ну представляете объем работы), поэтому максимум что я видел - это попытка научить сталкер работать с несколькими cpu.
to dsh - читал несколько раз пост, осилить не смог пример. ну объявил я int32 вместо uint, получил меньший max(int) - но при этом получил CLS-совместимость, что такого плохого?