Midl: ошибка MIDL9008 - PullRequest
       17

Midl: ошибка MIDL9008

0 голосов
/ 21 декабря 2011

В 2008 году я получаю следующую ошибку:

midl: ошибка MIDL9008: внутренняя проблема с компилятором - см. Документацию для предложений по поиску обходного пути.

midl: утверждение не удалось: (rc <_MAX_DIR) && (rc! = 0), файл d: \ longhorn \ com \ rpc \ midl \ front \ filehndl.cxx, строка 821 </p>

Проблема вызвана следующим кодом в файле %PROGRAMFILES%\Microsoft SDKs\Windows\v7.1\Include\Guiddef.h в строке, отмеченной <-----:

 #ifndef GUID_DEFINED

 #define GUID_DEFINED

 #if defined(__midl)

typedef struct {

        unsigned long  Data1;
        unsigned short Data2;
        unsigned short Data3;
        byte           Data4[ 8 ];

} GUID;     <------

 #else

 typedef struct _GUID {

        unsigned long  Data1;
        unsigned short Data2;
        unsigned short Data3;
        unsigned char  Data4[ 8 ];

} GUID;

 #endif

 #endif

Переименование или удаление «GUID» решит внутреннюю проблему компилятора, но, конечно, вызывает много других. И код, и исполняемые файлы midl.exe (из WinSDK v6.0), которые используются, идентичны используемым на другом компьютере, где эта ошибка не возникает. У кого-нибудь есть идея получше, чем переустановка Windows?

Ответы [ 2 ]

1 голос
/ 06 сентября 2016

Мои midl* файлы в какой-то момент «повредились», либо после установки Windows 8.1 SDK со всеми подкомпонентами, либо при обновлении Visual Studio 2015 - наверное, у меня нет точного отслеживания когда они могли быть перезаписаны.

С тех пор я продолжал получать MIDL9008 при компиляции проекта, который был хорош до этого. Midlc.exe даже сбой при попытке построить определенный проект.

Решением было заменить midl* файлы с

C:\Program Files (x86)\Windows Kits\8.1\bin\x86

(because that's where midlc.exe and midl.exe were starting from, verified by using procmon)

с теми же файлами с другой машины, на которой проблема не существовала.

Удивительно, но размеры файлов midl* из одних и тех же папок были разными, хотя сообщенные номера версий были одинаковыми! Это был четкий показатель того, что замена их может что-то исправить.

Копирование файлов (midl.exe, midlc.exe, midlrt.exe, midlrtmd.dll) решило проблему. Очень рад, что мне не пришлось переустанавливать Windows только для того, чтобы исправить эту досадную и неприятную проблему!

0 голосов
/ 05 марта 2012

Кажется, что-то действительно сильно испорчено. Переустановка Windows и Visual Studio помогла, хотя.

...