Programm funktioniert auf Win7-64bit aber Fehler clr20r3 auf WinXP-32bit

  • Ersteller Ersteller hausichris
  • Erstellt am Erstellt am
H

hausichris

Gast
Hallo zusammen,,
ich habe mit MS Visual Studio 2010 ein eigenes Programm geschrieben (aus verschiedenen zusammengefügt), bin noch Anfänger.
Das Programm funktioniert auf WIN7-64bit, aber auf WinXP-32bit kommt folgener Fehler:

EventType : clr20r3
P1 : skyper.exe
P2 : 1.0.0.0
P3 : 4e04edde
P4 : system.drawing
P5 : 4.0.0.0
P6 : 4ba1e086
P7 : 356
P8 : 42d
P9 : n3ctrye2kn3c34sgl4zqyrbfte4m13nb

Bisher hat das Programm auf einem XP-Rechner funktioniert, was ich dazwischen geändert habe weiß ich leider nicht.

Erstellkonfiguration: .NET Framework4.0, x86

Kann mir jemand weiterhelfen?

Welche Info´s werden noch benötigt?

Chris
 
toeffi schrieb:
Ist denn auf dem WinXP das .NET Framework 4.0 installiert?
Kleiner Hinweis: Wenn du nicht weißt ob das .NET Framework 4.0 auf dem Zielrechner installiert ist, dann entwickel das PRogramm lieber auf Basis des .NET Framework 3.5, denn das ist seit dem SP3 für WinXP auch standardmäßig mit Installiert. So kriegst du keine Probleme.

Das stimmt nicht. Bei Windows XP gehört keine .NET-Version zum Betriebssystem. Auch mit XP SP3 wird nicht .NET 3.5 installiert. 3.5 gehört erst seit Windows 7 als optionale Komponente zu Windows. Vorher gabs mit Vista schon Version 2.0 + 3.0 und mit Server 2003 Version 1.1. Alle höheren Versionen muss man jeweils nachinstallieren.
 
Stimmt, ich hab grad nochmal nachgelesen. Mir war so als wenn ich es mit installiert hatte, vielleicht auch wirklich händisch. Ok Fehler meinerseits.
 
Ja habe auf dem WinXP-Rechner davor das 4.0 installiert. Habe auch versucht das Programm auf 3.5 Basis zu erstellen, das macht aber Probleme:
"TlbImp : error TI0000: A single valid machine type compatible with the input type library must be specified."

Woran könnte das jetzt liegen?
 
Verwendest du custom DLL files? Wenn die 64-bit kompiliert sind laufen sie unter 32-bit nicht.
 
Coustum-dll´s? Kenn mich leider nicht so gut aus!
Das Programm besteht aus zwei teilen, hier mal die dll´dieser zwei Teile:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using SKYPE4COMLib;
using System.Threading;

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;

Ich verwende API von Skype -> Skype4com

Ich habe auch eine WinForm AboutBox eingefügt, wenn diese drin kommt sofort:
Skyper.exe hat ein Problem festgestellt und muss beendet werden.
-> AppName: skyper control.exe AppVer: 1.0.0.0 ModName: kernel32.dll
ModVer: 5.1.2600.5781 Offset: 00012afb

Wenn ich dieses rausnehme kommt:
System.Runtime.InteropServices.COMException (0x80040154) Retrieving the COM class factory for component with CLSID {830690FC-BF2F-47A6-AC2D-330BCB402664} failed due to the following error 80040154 Klasse nicht registriert (Exception from HRESULT 0x80040154 (REGDB_E_CLASSNOTREG)).

kann aber continute machen, das WinForm erscheint, funktioniert aber nicht richtig!

(Beides unter 4.0 erstellt)

Weiß echt nicht weiter!!!
 
Hast du die skype4com.dll unter Windows registriert? Geht mit regsvr32 in einer Administrator-Eingabeaufforderung.
Ergänzung ()

Ach ja, was IceMatrix erwähnte, du solltest in deinen Projekteinstellungen die Zielplattform von "Any CPU" auf "x86" stellen, da dein Programm ansonsten als 64Bit-Version ausgeführt wird, dass die sehr wahrscheinlich nur 32bittige skype4com.dll nicht laden kann. Durch diese Einstellung erzwingst du, dass dein Programm auch unter Win64 als 32Bit-Prozess ausgeführt wird.
 
die Skype4com hab ich auf dem Rechner auf dem ich das Programm erstellt habe registriert, auf dem Zielrechner nicht, muss ich das machen?

Ja, erstellt habe ich es auf x86, also in den Eigenschaften des Programmes geändert.
Auch habe ich im Konfigurationmanager, eine neue Projektplattform x86 angelegt (Hier aber die Einstellungen von AnyCPU kopiert, oder muss ich andere einstellungen vornehmen, wie geht dass?)
Ergänzung ()

Habs mir nochmal angeschaut:

Erstellen unter 4.0 x86, funktioniert ohne Fehler
Erstellen unter 3.5 x86, kommt folgender Fehler:

TlbImp : error TI0000: A single valid machine type compatible with the input type library must be specified.
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1558,9): warning MSB3283: Die Wrapperassembly für die Typbibliothek "SKYPE4COMLib" wurde nicht gefunden.

Hab auch mal den Verweis auf die Skype4com erneuert, leider ohne erfolg!
Ergänzung ()

Hallo zusammen,

habe nach einigem Ausprobieren das ganze wieder zum Laufen bekommen!

1.Fehler:
Anscheinend muss auf dem Ziel-PC auf die Skype4com.dll eingefügt und mit regsvr32 registriert werden.

Das alleine wars aber noch nicht!

2.Fehler:
In meinem "fertigen" Programm habe ich nochmals ein Icon gewechselt gehabt (Farben des Icon wurde von mir geändert!), dies verursachte einen Fehler mit der kernell32.dll!
Warum???
Nachdem das Original-Icon wieder eingefügt war lief es!

Wahnsinn was so eine kleine Änderung verursachen kann!

Vielen Dank an alle für die Unterstützung!
 
Zurück
Oben