Pergunta

OK, aqui está a minha estranheza por hoje.
Eu crio extensões para um programa C ++ existente que não tenho acesso ao código-fonte.

Eu escrevo DLLs padrão C / C ++ e uso o IJW para chamar C # DLLs. Eu não fiz isso há algum tempo, mas agora estou tentando conseguir um para funcionar na janela 7. Eu recebo um erro (erro 0000036b1 - Não tenho certeza se esse é um número de erro interno para o aplicativo ou um erro do Windows. < / p >.

Eu tenho vários PCs virtuais (XP e Windows 7) A DLL funciona muito bem no XP. Também funciona no Windows 7 se o Visual Studio 2008 estiver instalado. Mas não em uma janela limpa 7 com apenas o pacote redistribuível do Microsoft Visual C ++ 2008 SP1 instalado.

Eu posso compilar e executar dlls C ++ em linha reta na caixa Limpa do Windows 7, desde que o interruptor do compilador esteja definido como MT [d], mas se eu definir o comutador / CLR, devo mudar isso para MD [d] e, em seguida, Falha na caixa Limpa do Windows 7. Mas, não na caixa do Windows 7 com o Visual Studio 2008 instalado.

Alguma idéia sobre o que eu preciso instalar na caixa limpa? (além de vs, claro ;-))

Obrigado pela sua ajuda.

l. Lee saunders

Foi útil?

Solução

ok isso é ruim.Alguém apontou que os arquivos que eu precisava foram as versões de depuração e isso significava que eu tinha compilado minha DLL no modo de depuração.Ele sugeriu que eu tentei o modo de liberação.

Então, com uma nova cópia do meu PC virtual executando o Windows 7 Basic (este o redist Redist 3.5 C ++ instalado) Eu copiei sobre minha DLL original (o no modo de depuração) apenas para verificar se este PC virtual tinha o problema.Sim fez.

Então eu copiei uma dll que foi compilada no modo de liberação.Funcionou.

OK, eu oficialmente quero bater minha cabeça em uma parede.

Obrigado pelo seu tempo.

l.Lee saunders

Outras dicas

Você precisará do tempo de execução do VC ++ REGISTRIBULE (que tem código de suporte para c ++ nativo) e o .NET Framework 3.5 (que tem código de suporte para C ++ / CLI).

.net 3.5 deve vir com win7, mas vs2008 sp1 vem com .NET 3.5 SP1, então eu recomendaria instalar todas as atualizações do .NET do Windows Update.

Agora me sinto mal.Não foi completamente uma instalação limpa do Windows 7. Eu precisava instalar o aplicativo que estou escrevendo extensões.A mais recente patch de programas instalou o pacote redistribuível do Visual C ++ 2008 SP1.

Bem, decidi tentar criar um projeto de instalação de um pequeno bitty C ++ / CLI DLL e disse que inclua dependências.Ele puxou 2 arquivos:

C: \ Arquivos de Programas \ Arquivos Comuns \ Modules Modules \ Microsoft_VC90_Debugcrt_x86.msm C: \ Arquivos de Programas \ Arquivos Comuns \ Modules Merge \ Policiais_9_0_Microsoft_VC90_Debugcrt_x86.msm

Eu corri a instalação e o minúsculo aplicativo funcionou.Eu copiei manualmente sobre minhas dlls e eis que funcionaram agora.Então, para conseguir para funcionar, precisava desses dois arquivos.

Por quê?E por que eles não foram incluídos no pacote Redist?

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