Я использую VS 2008. Я скомпилирую свой код на C++ в 32-битном компиляторе. Я использую DialogBoxParam для создания графического интерфейса и его работы. Но тот же код скомпилирован в 64-битном компиляторе, я получаю ошибку, что ошибка C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'BOOL (__cdecl *)(HWND,UINT,WPARAM,LPARAM)' to 'DLGPROC'
. Пожалуйста, помогите мне с этимПреобразование кода на C++ с 32 до 64 бит
ответ
Поскольку вы компилируете 32-битную машину, обычной проблемой при переходе на 64-битную машину является то, что длинный и int 32 бит на 32-битной платформе, а длинный - 64 бит и int 32 бит на 64-битной платформе. Если вы используете ссылку на указатель или манипулирование байтами, это может вызвать трудности при вызове ваших функций.
Вам необходимо изучить фактическую обработку.
Если вы проверяете, например. this DLGPROC
reference вы увидите, что он должен вернуть INT_PTR
, а не BOOL
.
Проблема, которая возникает из-за того, что BOOL
является псевдонимом типа int
, который представляет собой 32 бита на обеих 32- и 64-разрядных платформах с использованием компилятора Visual Studio. INT_PTR
, с другой стороны, 64 бит на 64-битных системах, что приводит к несоответствию типа возврата.
Измените тип возврата функции диалога на правильный INT_PTR
и он должен работать на и 32 и 64-разрядных системах.
- 1. Преобразование неуправляемого кода на C++ с 32 до 64 бит
- 2. Преобразование сборки Inline от 32 бит до 64 бит
- 3. Разъяснение: Портирование 32 до 64 бит
- 4. Перемещение приложения с 32 до 64 бит
- 5. Перетаскивание с 32 до 64 бит
- 6. портирование с 32 бит на 64 бит
- 7. Обновление mysql 32 бит до 64 бит
- 8. неявное преобразование сокращается с 64 до 32 бит
- 9. Изменение с 32 до 64 бит
- 10. Как обновить GIT 32 бит до 64 бит на окнах?
- 11. 32-бит или 64-бит? Использование кода C
- 12. 64 до 32 бит Interop - как?
- 13. 64 бит против 32 битного кода C на Solaris 10
- 14. DriverPackagePreinstall для работы на 64 бит (скомпилировано до 32 бит)
- 15. Миграция кода сборки от 32 до 64 бит вопрос
- 16. Fortran: переносимость производительности 32 бит/64 бит
- 17. Компиляция 32-битного кода в 64 бит
- 18. Затмение updgrade 32 бит до 64 бит окна 7
- 19. 64 бит на 32 бит разделения
- 20. 32/64 бит eclipse
- 21. 64-разрядное число до 2x 32 бит
- 22. от python 32 бит до python 64 бит
- 23. Преобразование 64-битного PHP в 32 бит на WAMP 64bit
- 24. ubuntu 11.10 64 бит против 32 бит
- 25. Обновление Windows XP 32 бит до Windows 7 64 бит
- 26. Проблема с диском C. 32 бит и 64 бит?
- 27. Повторная компиляция 32-битной библиотеки C++ до 64 бит
- 28. Изменение среды разработки Asp.net 2.0 32 бит до 64 бит
- 29. 32 бит в преобразование unit64 в C++
- 30. Переключатель py2exe от 64 бит до 32 бит
Я внес эти изменения. Тем не менее я получаю ту же ошибку –
Если «эти изменения» относятся к конкретному ответу, добавьте комментарий к этому ответу вместо вопроса. Я думаю, вы имеете в виду ответ Йоахима, и, очевидно, вы не получите тот же ответ, если бы вы действительно применили его изменения. – MSalters
Да, я упомянул ответ Йоахима, я не получил никакого решения –