Question

OK, voici mon étrangeté pour aujourd'hui.
Je crée des extensions à un programme C ++ existant que je n'ai pas accès au code source.

i écrire des dlls C / C ++ standard et j'utilise ijw pour appeler C # DLLS. Je n'ai pas fait cela dans un moment, mais maintenant j'essaie d'obtenir un pour travailler sur la fenêtre 7. Je reçois une erreur (Erreur 0000036B1 - pas sûr si c'est un numéro d'erreur interne à l'application ou une erreur de Windows. < / p>

J'ai plusieurs PC virtuels (XP et Windows 7) La DLL fonctionne simplement bien sur XP. Cela fonctionne également sur Windows 7 si Visual Studio 2008 est installé. Mais pas sur une fenêtre propre 7 avec uniquement le package redistribuable SP1 Microsoft Visual C ++ 2008 SP1 installé.

Je peux compiler et exécuter des dlls droites C ++ sur la case Nettoyante Windows 7 tant que le commutateur Compiler est réglé sur MT [D] mais si je réglais le commutateur / CLR, je dois changer cela en MD [D], puis Il échoue sur la boîte de fenêtres propres 7. Mais non sur la case Windows 7 avec Visual Studio 2008 installé.

Des idées sur ce que j'ai besoin d'installer sur la boîte propre? (autre que vs bien sûr ;-))

Merci pour votre aide.

l. Lee Saunders

Était-ce utile?

La solution

OK c'est mauvais.Quelqu'un a souligné que les fichiers dont j'avais besoin étaient les versions de débogage et qui signifiait que j'avais compilé ma DLL en mode de débogage.Il a suggéré d'essayer le mode de sortie.

Ainsi, avec une nouvelle copie de mon ordinateur virtuel exécutant Windows 7 Basic (Ceci est installé 3.5 C ++ réducteur) J'ai copié sur ma DLL d'origine (celle du mode de débogage) juste pour vérifier que ce PC virtuel avait le problème.Yep c'est fait.

Puis j'ai copié sur une DLL compilée en mode de libération.Ça a marché.

OK, je veux officiellement battre ma tête sur un mur.

Merci pour votre temps.

l.Lee Saunders

Autres conseils

Vous aurez besoin à la fois de la redistributable VC ++ d'exécution (qui dispose de code de support pour Native C ++) et le .NET Framework 3.5 (qui dispose de code de support pour C ++ / CLI).

.NET 3.5 devrait venir avec Win7, mais vs2008 SP1 est livré avec .NET 3.5 SP1 afin que je recommande d'installer toutes les mises à jour .NET à partir de Windows Update.

Maintenant, je me sens mal.Ce n'était pas complètement une installation propre de Windows 7. Je devais installer l'application que j'écris des extensions pour.Le dernier patch de ce programme a installé le package redistribuable Visual C ++ 2008 SP1.

Eh bien, j'ai décidé d'essayer de créer un projet d'installation d'un peu de DLL Bitty C ++ / CLI et raconté qu'elle inclure des dépendances.Il a tiré dans 2 fichiers:

C: \ Fichiers de programme \ Fichiers communs \ Modules de fusion \ Microsoft_VC90_DEBUGCRT_X86.MSM C: \ Fichiers de programme \ Fichiers communs \ Modules de fusion \ Policy_9_0_Microsoft_VC90_DEBUGCRT_X86.MSM

J'ai couru l'installation et la minuscule application a fonctionné.Je copié manuellement sur mes dlls et lo et voici qu'ils ont travaillé maintenant à.Donc, pour le faire travailler, j'avais besoin de ces deux fichiers.

pourquoi?Et pourquoi n'étaient-ils pas inclus dans le colis de la Redist?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top