Мы собираемся переместить наше приложение с VS2008 на VS2010.
Мы генерируем некоторые COM-объекты с помощью «атрибутивного программирования», и IDL генерируется автоматически.
Директивы импорта для обоих файлов различны, и компиляция VS2010 не удалась.
на VS2008 генерирует что-то вроде:
import "docobj.idl";
на VS 2010
import "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wincrypt.idl";
import "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\exdisp.idl";
import "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\shldisp.idl";
import "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\prsht.idl";
import "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\mshtmhst.idl";
import "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\mshtml.idl";
import "c:\program files (x86)\microsoft sdks\windows\v7.0a\include\dimm.idl";
import "c:\program files (x86)\microsoft sdks\windows\v7.0a\include\dispex.idl";
Когда IDL компилируется на VS2010, он генерирует следующие ошибки
20> Microsoft (R) 32b/64b MIDL Compiler Version 7.00.0555
20> Copyright (c) Microsoft Corporation. All rights reserved.
20> Processing .\_my_idl.idl
20> _my_idl.idl
20> Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wincrypt.idl
20> wincrypt.idl
20>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wincrypt.idl(47): error MIDL2025: syntax error : expecting a type specification or a storage specifer or a type qualifier near "WCHAR"
20>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wincrypt.idl(47): error MIDL2026: cannot recover from earlier syntax errors; aborting compilation
20>LINK : fatal error LNK1240: failed to compile IDL content
удаление вручную директивы импорта "wincrypt.idl" устраняет ошибку компиляции, но это не является решением, поскольку idl генерируется автоматически.
Я не уверен, почему два IDL отличаются и что отвечает за добавление директив импорта; или даже как исправить ошибку компиляции MIDL.
Есть идеи?
Заранее спасибо.
Макс.