Não há definições de tipo em pré-definido IDL ARQUIVO
Pergunta
Em primeiro lugar,
Usando simples C ++, sem ATL, MFC tentar interface de uso do objeto COM.
Usando OLEVIEW (OLE / COM visualizador de Object) -. Usado para projetar o código IDL
Nesta fase, usando MIDL Compiler, agora eu estou tendo problemas para tentar produzir o seguinte:
A sintaxe na linha cmd:
midl / nologo / env win32 / tlb "\ S8_.tlb" / h "\ S8_.h" / iid "\ S8_i.c" S8.idl
- A .TLB correspondente (Type Library)
- A .H (cabeçalho) definições
- Um IID arquivo de inclusão (* _i.c)
- Um proxy (* _p.c)
MIDL erro do compilador:
S8.IDL (513): Erro MIDL2025: erro de sintaxe: esperando uma especificação do tipo de perto "S8SimObject"
HRESULT LinkSimObjects(
[in] S8SimObject* SourceObject, ####line 513 ####
[in] S8SimObject* DestObject,
[in] float TravelTime);
Solução 2
MIDL compilador erro
S8.IDL (513): Erro MIDL2025 : erro de sintaxe: esperando uma especificação do tipo de perto "S8SimObject"
RESOLVIDO
Adicionar um declaração para a frente - na parte superior do arquivo IDL:
- importação "Ocidl.IDL";
- interface de S8SimObject;
Outras dicas
Bem, eu realmente não entendo a sua pergunta aqui, mas a seguir deve ajudar:
- definições enum Pública precisa ter seu próprio UUID para ser realmente público.
- Eu vi que essas definições enum não ir para a biblioteca tipo a menos que eles são realmente utilizados em algum método de interface. Eu não sei a razão para isso, provavelmente eu perdi alguma coisa simples (como acrescentando que enum a um bloco de biblioteca, ou qualquer outro).
-
short
normalmente significa um número inteiro curto, não um de precisão simples número de ponto flutuante. - O equivalente a
float
ésingle
em VB, mas como eu vi em outras questões de você, eu suspeito que você realmente significou substituirsingle
comfloat
.
A propósito, eu recomendo para deixar um mínimo (compilable) IDL arquivo (despojado da maioria das definições), que se assemelha mais ou menos o que você está tentando compilar. Isso ajuda contra alguma confusão, como você está, por exemplo, usando IS8Simulation
em seu texto, mas S8SimObject
em sua IDL copiado trecho. E seria também ajuda se você especificar o resultado esperado, eo erro inesperado (para você).
Editar
Bem, este erro de compilação agora inserido é simples: S8SimObject
não está definido. Você precisa se referem sempre à interface nas declarações de método (IS8Simulation
), para nunca mais o coclass que implementa a interface.
Como você disse que você está mudando um arquivo IDL existente aqui: Qual é o objetivo básico? Se o arquivo IDL originais sempre usa S8SimObject
, talvez o único problema é que a definição de S8SimObject
não está incluído no topo do arquivo IDL? Se você tem a biblioteca tipo definindo S8SimObject
ao redor, você pode exportar o IDL desta interface usando OleView.