#c #visual-studio-2008
#c #visual-studio-2008
Вопрос:
Я хочу скомпилировать старую (1998) реализацию Edge Collapse из журнала разработчика игр (файл проекта сжат в «melax.zip «) в Visual Studio 2008.
В строке 390 из winmain.cpp Я получаю следующую ошибку компиляции:
winmain.cpp(390) : error C2664: 'ReleaseDC' : cannot convert parameter 1 from 'HDC' to 'HWND'
и снова в строке 439.
Как я могу это исправить?
Комментарии:
1. Ответ удален, соответствующий код не был опубликован, поэтому мы должны были догадаться (да, вы ссылались на zip, но простая публикация строки 390 ускорила бы решение)
2. Это слишком долго. Я включил ссылку на него в gdmag, пользователь воспользовался ею и увидел ошибку. Довольно впечатляюще видеть, как он запускается.
3. строка 390 слишком длинная для публикации? теперь я действительно хочу это увидеть, но все еще недостаточно, чтобы загрузить его.
4. @omgzor «Довольно впечатляюще видеть, как он компилируется «. Это исправлено для вас.
5. @KevinDTimm: Да, извините, только в тот момент у меня свело руки.
Ответ №1:
Аргументы в ReleaseDC
меняются местами при вызове — он вызывает ReleaseDC(hDC, hWnd)
, в то время как правильная подпись равна
int ReleaseDC(
__in HWND hWnd,
__in HDC hDC
);
Наслаждайтесь исправлением ошибки 13-летней давности 🙂
Ответ №2:
Указанная строка выглядит следующим образом:
ReleaseDC(hDC, hWnd);
Однако функция ReleaseDC
принимает параметры в обратном порядке.