Pergunta

Nós estamos olhando para mudar a nossa aplicação a partir do VS2008 para o VS2010.

Nós gerar alguns objetos com o "atribuído programação" e o IDL são gerados automaticamente.

A importação de directivas para ambos os arquivos são diferentes e a compilação falha no VS2010.

no VS2008, gera algo como :

import "docobj.idl";

no 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";

Quando o IDL é compilado no VS2010 ele gera os seguintes erros

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

como remover manualmente o "wincrypt.idl" importar diretiva remove o erro de compilação, mas isso não é uma solução, pois o idl são gerados automaticamente.

Eu não sou certo porque os dois IDL são diferentes e que é responsável para adicionar a importação de directivas;ou até mesmo como corrigir o MIDL erro de compilação.

Qualquer idéias ?

Obrigado antecipadamente.

Max.

Foi útil?

Solução

Ele está em falta

 #import "ocidl.idl"

Você pode corrigi-lo usando o [importidl] atributo em seu código.

Atribuído, a programação foi um pouco de um engano, meteu-se, essencialmente, preterido quando ele foi removido como uma opção para o ATL assistente de Projeto no VS2008.Para a manutenção a longo prazo da sua base de código, tente removê-lo.Você pode usar o auto-gerado .idl como forma de obter o que começou.

Outras dicas

Talvez eu estava usando o [importidl] atributo errado, mas eu não poderia obter de Hans resposta para corrigir este problema.Mas a correcção aqui funcionou.Basta adicionar este topo de sua stdafx.h ficheiro:

[idl_quote("import \"ocidl.idl\";")];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top