Domanda

OK, ecco la mia stranezza per oggi.
Ho creato estensioni a un programma C ++ esistente che non ho accesso al codice sorgente.

Scrivo DLL standard C / C ++ e uso IJW per chiamare C # DLLS. Non ho fatto questo in un po ', ma ora sto cercando di far funzionare una finestra sulla finestra 7. Ottengo un errore (errore 0000036b1 - non sicuro se questo è un numero di errore interno all'applicazione o un errore di Windows. < / P >.

Ho più PC virtuali (XP e Windows 7) La DLL funziona bene solo su XP. Funziona anche su Windows 7 se Visual Studio 2008 è installato. Ma non su un windows 7 pulito con solo il pacchetto ridistribuibile Microsoft Visual C ++ 2008 SP1 installato.

Posso compilare ed eseguire dritti DLL C ++ sulla casella Pulizia di Windows 7 purché l'interruttore del compilatore è impostato su MT [D] ma se impostare l'interruttore / CLR, devo cambiarlo su MD [D] e quindi Non riesce sulla casella Pulizia di Windows 7. Ma, non sulla casella Windows 7 con Visual Studio 2008 installato.

Qualche idea su ciò che ho bisogno di installare sulla casella pulita? (diverso da VS ovviamente ;-))

Grazie per il tuo aiuto.

l. Lee Saunders

È stato utile?

Soluzione

ok questo è cattivo.Qualcuno ha sottolineato che i file di cui avevano bisogno erano le versioni di debug e ciò significava che avevo compilato la mia DLL in modalità Debug.Ha suggerito di provare la modalità di rilascio.

Allora, con una nuova copia del mio PC virtuale che esegue Windows 7 di base (questo è installato il redist 3.5 C ++) Ho copiato sulla mia DLL originale (quello in modalità Debug) solo per verificare che questo PC virtuale abbia il problema.Sì, lo ha fatto.

Poi ho copiato su una DLL che è stato compilato in modalità di rilascio.Ha funzionato.

OK, voglio ufficialmente battere la testa su un muro.

Grazie per il tuo tempo.

l.Lee Saunders

Altri suggerimenti

È necessario ridistribuibili sia il runtime VC ++ (che ha il codice di supporto per C ++ nativo) e il .NET Framework 3.5 (che ha il codice di supporto per C ++ / CLI).

.NET 3.5 dovrebbe venire con Win7, ma VS2008 SP1 viene fornito con .NET 3.5 SP1, quindi consiglierei di installare tutti gli aggiornamenti .NET da Windows Update.

Ora mi sento male.Non è stato completamente un'installazione pulita di Windows 7. Avevo bisogno di installare l'app per cui sto scrivendo estensioni.L'ultima patch di quel programma è installato il pacchetto ridistribuibile Visual C ++ 2008 SP1.

Bene, ho deciso di provare a creare un progetto di installazione di un piccolo bitty c ++ / cli DLL e ha detto di includere le svalutazioni.Tirato in 2 file:

C: \ Programmi \ Files Files \ Merge Modules \ Microsoft_VC90_DEBUGCRT_X86.MSM C: \ File Programmi \ File Common \ Merge Modules \ Policy_9_0_Microsoft_VC90_DEBUGCRT_X86.msm

Ho eseguito l'installazione e la piccola app ha funzionato.Ho copiato manualmente le mie DLL e lo ecco che hanno lavorato ora.Quindi per farlo funzionare avevo bisogno di questi due file.

Perché?E perché non erano inclusi nel pacchetto redista?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top