Я не могу собрать библиотеку, которая нуждается в WOW64 Api - PullRequest
1 голос
/ 22 мая 2009

Я исправляю ошибку в 64-разрядной версии Windows Vista 32-битного приложения, когда я пытаюсь использовать функцию Wow64DisableWow64FsRedirection (...), компилятор говорит «необъявленный идентификатор ...».

Я включаю заголовочный файл Windows.h и задаю для _WIN32_WINNT значение 0x0501.

Есть идеи?

Спасибо.

РЕДАКТИРОВАТЬ: Мы используем MS Visual Studio 2003

Ответы [ 3 ]

3 голосов
/ 22 мая 2009

Ваши файлы SDK платформы, вероятно, слишком старые, чтобы иметь эту функцию. Эта функция впервые появилась в 64-битной платформе XP SDK. Вы можете получить последнюю версию SDK здесь: http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&displaylang=en

Несмотря на то, что в нем говорится, что это «Windows SDK для Windows Server® 2008», это всего лишь последний SDK, и он будет иметь все обратно совместимые файлы, которые вам нужны.

После установки, в зависимости от вашего компилятора, вам, вероятно, придется указать на него каталог include.

2 голосов
/ 22 мая 2009

Можете ли вы увидеть этот API в заголовочном файле? Возможно, используемая вами Visual Studio не имеет обновленного заголовочного файла, в этом случае вам нужно будет выполнить LoadLibrary для Kernel32.dll, а затем GetProcAddress для необходимой функции.

1 голос
/ 22 мая 2009

Если ваше приложение должно работать в 32-битной Windows XP или Windows 2000, вы должны использовать LoadLibrary() и GetProcAddress(), как предложил Canopus, поскольку Wow64DisableWow64FsRedirection() и Wow64RevertWow64FsRedirection() не добавлялись до 64-битной Windows XP и Server 2003 SP1 (согласно документации ).

...