Frage

ok, hier ist meine seltsamheit für heute.
Ich erstellte Erweiterungen in ein vorhandenes C ++ - Programm, mit dem ich keinen Zugriff auf den Quellcode habe.

Ich schreibe Standard C / C ++ - DLLs und ich benutze IJW, um C # DLLs anzurufen. Ich habe das nicht schon mal getan, aber jetzt versuche ich, eine bis zum Arbeiten auf dem Fenster 7 zu bekommen. Ich erhalte einen Fehler (Fehler 0000036b1 - nicht sicher, ob dies eine interne Fehlernummer in der Anwendung ist, oder ein Windows-Fehler. < / p>

Ich habe mehrere virtuelle PCs (XP und Windows 7) Die DLL funktioniert auf XP einfach in Ordnung. Es funktioniert auch unter Windows 7, wenn Visual Studio 2008 installiert ist. Aber nicht auf einem sauberen Windows 7 mit nur dem Microsoft Visual C ++ 2008 SP1 umverteilbar installiertes Paket.

Ich kann gerade C ++ - DLLs auf dem Feld Clean Windows 7 kompilieren und ausführen, solange der Compiler-Switch auf MT [D] eingestellt ist, aber wenn ich den Schalter / CLR-Switch einstellen muss, muss ich das zu MD [D] und dann ändern Es fällt auf der Clean Windows 7-Box aus. NICHT auf der Windows 7-Box mit Visual Studio 2008 installiert.

Alle Ideen, was ich in der sauberen Box installieren muss? (außer vs natürlich ;-))

Danke für Ihre Hilfe.

l. Lee Saunders

War es hilfreich?

Lösung

ok das ist schlecht.Jemand hat darauf hingewiesen, dass die von mir benötigten Dateien die Debug-Versionen waren, und das bedeutete, dass ich meine DLL im Debug-Modus erstellt hatte.Er schlug vor, dass ich den Freigabemodus versuche.

Mit einer neuen Kopie meines virtuellen PCs laufend Windows 7 Basic (dieser installierte 3,5 C ++ - REDIST installiert), kopierte ich über meine Original-DLL (den im Debug-Modus), nur um zu überprüfen, ob dieser virtuelle PC das Problem hatte.Ja, es tat es.

Ich habe dann über eine DLL kopiert, die im Release-Modus kompiliert wurde.Es funktionierte.

ok, ich möchte offiziell meinen Kopf an der Wand schlagen.

Vielen Dank für Ihre Zeit.

l.Lee Saunders

Andere Tipps

Sie benötigen sowohl die VC ++-Laufzeit umverteilbar (der Hilfscode für native C ++) und das .NET Framework 3.5 (der Unterstützung für C ++ / CLI verfügt).

.NET 3.5 sollte mit Win7 kommen, aber VS2008 SP1 wird mit .NET 3.5 SP1 geliefert, sodass ich empfehlen würde, alle .NET-Updates von Windows Update installieren zu können.

Ich fühle mich jetzt schlecht.Es war nicht völlig eine saubere Installation von Windows 7. Ich musste die App installieren, für die ich Erweiterungen schreibe.Dieses neueste Patch der Programme installierte das visuelles C ++ 2008 SP1-Umverteilbares Paket.

Nun, ich entschied mich dafür, ein Installationsprojekt einer kleinen Bitty C ++ / CLI-DLL zu erstellen, und sagte es, um Abhängigkeit von zu enthalten.Es wurde in 2 Dateien gezogen:

c: \ Programme \ Common-Dateien \ Merge-Module \ Microsoft_VC90_DEbugcrt_x86.msm C: \ Programmdateien \ Common-Dateien \ Merge-Module \ policy_9_0_microsoft_vc90_debugcrt_x86.msm

Ich hatte die Installation und die winzige App funktionierte.Ich kopierte manuell über meine DLLs und siehe, sie haben jetzt gearbeitet.Um es zur Arbeit zu bringen, brauchte ich diese beiden Dateien.

Warum?Und warum wurden sie nicht in das REDIST-Paket aufgenommen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top