Idiadatasource loaddataforexe


Estou começando com o DIA SDK e tenho o seguinte código simples: se eu começar o Visual Studio IDE, afirmar falhar com EPDBNOTFOUND, mesmo que eu comece sem depuração. Mas se eu começar o mesmo programa fora do IDE, ele funciona bem e retorna SOK. Primeiro, pensei que era uma questão de diretório de trabalho, então coloquei printf no início para ver se esse é o problema, mas não é o problema. O diretório de trabalho é o mesmo e o PDB está lá. O Visual Studio faz algo que afeta o comportamento do DIA SDKs Eu não vejo nada na documentação. Solicitado 13 de fevereiro 15 às 14: 31Estendo ajudando um colega de trabalho que trabalha com o SDK de Acesso à Interface de Debug em C. Pelo que eu posso dizer, o msdia80.dll tem uma interface COM, então registrei a DLL (usando regsvr32) e voila Pode ser referenciado diretamente no projeto C. O chamado está interessado em IDiaDataSource :: loadDataForExe (). O terceiro parâmetro é um objeto que, de acordo com a documentação, precisa implementar a interface IDiaLoadCallback, IDiaLoadCallback2, IDiaReadExeAtOffsetCallback ou IDiaReadExeAtRVACallback. No entanto, essas interfaces não estão expostas na referência Dia2Lib. Tanto quanto eu posso dizer, todas as outras interfaces definidas em dia2.h são expostas, exceto aquelas exigidas pelo loadDataForExe (). Como posso implementar uma interface que eu não posso referenciar Ive, até tentei criar uma classe C não gerenciada que implemente a interface IDiaLoadCallback, encaixada em uma classe C gerenciada e crie uma biblioteca de classes que eu acesse no meu projeto C. No entanto, quando eu tentar chamar a minha classe gerenciada, uma exceção é lançada devido a uma montagem em falta. Não consigo ver por que eu teria que fazê-lo dessa maneira, de qualquer forma, mas valeu a pena disparar. Qualquer sugestão de ajuda seria muito apreciada, obrigado. Quinta-feira, 12 de abril de 2007 9:18 PM Estas interfaces estão expostas aos clientes C. Por exemplo, IDiaLoadCallback2 Você deve ser capaz de gerar um assembly de interoperabilidade a partir do typelib (não sabe se há um typelib ou não), ou, em pior caso, apenas imite a interface C em C, ao mesmo tempo que aplica as guids apropriadas. Objeto, uuid (AAAAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAAA), ponteiro de padrão (única) interface IMyInterface. IUnknown HRESULT Foo () torna-se o seguinte em C Guid (quAAAAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAAquot), InterfaceType (ComInterfaceType. InterfaceIsIconhecido) interface pública IMyInterface Heres um artigo msdn que fala sobre a geração de interfaces C do idl:

Comments

Popular Posts