C ++ Windows API перекрывает? - PullRequest
1 голос
/ 02 апреля 2009

В VS9, когда я вызываю функцию GetTickCount (), она автоматически преобразует ее в функцию GetTickCount64 () после компиляции. Эта вторая функция работает только на Vista +, и, следовательно, мои программные ошибки при запуске на XP.

Как я могу переопределить это, чтобы он вызывал оригинальный GetTickCount ()?

Спасибо

Ответы [ 3 ]

3 голосов
/ 02 апреля 2009

Установите WINVER на версию окон, на которую вы хотите настроить таргетинг. Или, может быть, это _WIN32_WINNT или _WIN32_WINDOWS. Может быть, даже все они ...

Посмотрите на http://blogs.msdn.com/oldnewthing/archive/2007/04/11/2079137.aspx для получения подробной информации об этих маленьких макросах mess-o-version.

Однако я не вижу такого переопределения в Windows SDK - может ли быть что-то еще в нашей установке, которое выполняет переопределение (или, может быть, я его упускаю ...)?

0 голосов
/ 02 апреля 2009

Я установил следующее в targetver.h:

#define WINVER 0x0501 
#define _WIN32_WINNT 0x0501
#define _WIN32_WINDOWS 0x0501 

и он все еще переопределяется. Тем не менее, когда я создаю простой новый проект, который печатает GetTickCount (), он отлично работает на XP, даже без необходимости определять выше. Я ничего не менял в настройках проекта. Единственное различие между примером GetTickCount (), который работает, и тем, который не работает, заключается в том, что в нем есть много другого кода и его использования, но ни один из этого кода не должен ничего менять.

Что может быть причиной этого?

EDIT: один из других файлов, которые я использовал, вызывал GetTickCount64 () напрямую, и я не знал об этом, поэтому я предположил, что это была моя собственная функция GetTickCount (). Пожалуйста, не обращайте внимания на то, что я написал выше

0 голосов
/ 02 апреля 2009

Помните, что вы не компилируете свое приложение для Vista или Windows XP, скорее вы компилируете для 32-битной или 64-битной операционной системы. Если ваше приложение должно поддерживать другие версии Windows, кроме 64-битной Vista, укажите в опциях сборки 32-битную версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...