Pergunta

Estou correndo regularmente em situações semelhantes: Eu tenho um monte de COM DLLs (sem arquivos IDL) que eu preciso para usar e invocar para ser capaz de acessar alguns (não-documentados não-aberta,) formato estrangeira dados.

A plataforma da Microsoft Visual Studio tem capacidades muito agradáveis ??para importar esses DLLs e usá-los no meu projeto (Visual C ++ 's #import directiva, ou pegar e adicioná-los usando caixas de diálogo do Visual Basic .NET) - e isso é os vendedores recomendado maneira de uso -los.

Eu estaria interessado em encontrar uma maneira de usar essas DLLs em plataformas de desenvolvimento não-Microsoft. Ou seja, o uso dessas classes COM no projecto C ++ compilado com MinGW ou Cygwin, ou mesmo porta GCC de vinho para linux (compila C ++ visando Win32 em binário rodando nativamente no Linux).

Eu tenho algum sucesso limitado usando este driver , mas este isn' t sucesso em 100% das situações (que não posso usar COM objetos retornados por alguns métodos).

Tem alguém teve sucesso em situações semelhantes?

Foi útil?

Solução

Respondendo a mim, mas eu consegui encontrar o perfeito biblioteca para OLE / COM chamando em compiladores não-Microsoft: disphelper .

(ele está disponível de sourceforge.net sob uma licença BSD permissiva).

Ele funciona tanto em C e C ++ (e, portanto, qualquer outra língua com ligações C também). Ele usa um printf / scanf-like seqüência de formato de sintaxe .
(Você passa o que quiser, contanto que você especificá-lo no formato de string, ao contrário XYDispDriver , que exige que os argumentos para corresponder exatamente o que está especificado na biblioteca de tipos).

Eu modifiquei um pouco para obtê-lo também compilar em Linux com WineGCC (para produzir nativa Linux elf fora do código Win32), e para manusear "por ref" chama automaticamente (estoque disthelper exige que o programador configuração his / her própria variante).

Meu versão corrigida e correções estão disponíveis como um fork no github:

E aqui estão as minhas correções:

Outras dicas

O problema com o objeto OLE / Com visualizador fornecido com Visual Studio e Windows SDKs é que produz um .idl quebrado fora da DLL, que não pode ainda ser compilado pelo MIDL em um par .H / .CPP .

própria reimplementação de OleViewer do Wine é atualmente instável e cai ao tentar usar essas bibliotecas.

Eu acho que você deve ser capaz de usar a ferramenta gratuita Ole / Com objeto Viewer para fazer os arquivos de cabeçalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top