Hi,
ich bin fast am verzweifeln. Es geht um folgendes :
I habe ein Projekt mit verschiedenen Modulen (DLLs). Ich will nicht
tiefer darauf eingehen, denn ich weiß definitiv das es kein Bug oder
SourceCode Problem ist.
Auf dem Notebook läuft alles ohne Probleme.
Auf meinem Desktop PC erhalte ich die folgende Fehlermeldung :
Type Load Exception: function <XXX> in Module "View.dll" has no implementation.
meine View hat aber definitiv diese Implementation. Wenn ich im Debug
Modus starten will springt er nichtmal in die Main() Funktion sondern haut
sofort diesen dämlichen Fehler raus
Ich habe bisher schon folgende Lösungsansätze probiert :
muss dazu sagen das es auf dem Desk PC früher auch lief, das Problem
hab ich erst seitdem ich mein System mal neu aufgesetzt hatte.
Ich werd bald verrückt, vielleicht hatte ja jemand mal ein ähnliches Problem
und kann mir helfen 😦
Viiiiielen Dank schonmal !!!
grüße,
paddy
Hallo paddy3k,
vielleicht hast du da ein paar Probleme mit dem Framework auf deinem PC.
Versuche mal das .Net Framework neu zu installieren, vielleicht wird dann dieses eigenartige Problem behoben.
Hast du auf den beiden Geräten unterschiedliche Betriebssystem (oder unterschiedliche Versionen SP1 oder SP2)?
Gruss
Michael
Was ist View.dll für ne Dll, eine .NET Assembly, COM-Bibliothek oder eine die du mit DllImport aufrufst? Ist diese von dir programmiert?
Was auch noch sein könnte:
Schau dir die Pfade zu den compilierten Assemblies an. Mir ist regelmäßig der Fehler unterlaufen, eine DLL im Code aktualisiert zu haben, aber die compilierte DLL nicht ins Debug / Release-Verzeichnis des eigentlichen Projekts kopiert habe.
Hallo zusammen,
das kann alles Möliche sein:
* Eine COM Dll, die beim ersten Rechner korrekt registrier ist, beim 2. nicht
* Eine Referenz-DLL, bei der die Eigenschaft "CopyToLocal" auf "False" gestellt ist, beim 2. Rechner dann nicht im GAC oder Ausführungsverzeichnis liegt
* Kaputtes .NET Framework
* Unterschiedliche VS Versionen, und die Verwendung von Dll's, die nur bei/ab einer bestimmten VS-Version dabei sind.
* .NET SDK installiert / nicht installiert
* Windows Updates, die vielleicht relevante DLLs verändert haben
Ich hör jetzt einfach mal auf aufzuzählen.
Also bitte:
Was ist das für eine DLL und wie hast Du sie eingebunden.
Grüße
Norman-Timo
Wow, mit soviel Feedback hätte ich gar nicht gerechnet... gerade bei diesem Problem.
Erstmal ein FETTES DANKE SCHÖN ! Ihr seid Top 😃
Nun ein paar Infos zu meinem Setup :
(auf beiden Rechnern identisch) :
Die View.dll ist eine Klassenbibliothek die ich selbst geschrieben habe und die die
3D Darstellung mithilfe von Mogre (.NET Wrapper für Ogre3D) übernimmt.
Bei all meinen DLL's steht CopyToLocal auf True. Alle übersetzten Assemblies
landen in einem "Library" Unterverzeichniss und werden zugleich ins Application\Bin\Debug Verzeichnis kopiert.
Die Idee mit dem .NET Framework neu installieren halte ich bisher erstmal für den
besten Lösungsansatz, da wie gesagt das Setting auf beiden Rechnern soweit identisch
ist. Ich werde die Pfade nochmal peinlichst genau überprüfen und auch ob CopyToLocal
auf dem DeskPC wirklich bei allen DLL Projekten gesetzt ist.
Viiiielen Dank euch erstmal,
ich weiß schon warum ich in diesem Forum angemeldet bin. Immer TOP der Support hier ! 😃
Liebe Grüße
paddy
Die View.dll ist eine Klassenbibliothek die ich selbst geschrieben habe und die die 3D Darstellung mithilfe von Mogre (.NET Wrapper für Ogre3D) übernimmt.
Hi! Die CF-Fraktion hat öfters mit Type Load Exception zu tuen, weil sie Grafikfunktionen implementieren, die die Hardware nicht leisten kann. Grüsse - sarabande
klar, aber vor dem neuaufsetzen des systems gings aber problem los auf beiden Rechnern. Hab außerdem ne 8800GTX im Desk PC, die sollte dafür reichen 😉
Ich mach kein DX10 Kram, und verwend nur sehr wenige "billig" Shader. 😃
klar, aber vor dem neuaufsetzen des systems gings aber problem los...
Hi! Warum war das notwendig? Grüsse - sarabande
Hatte neue Hardware bekommen (MB, CPU, RAM) und nach dem Umbau gabs haufen Treiberprobleme im System, so das ich irgendwann gefrustet alles neu gemacht hab. Ist schon ne komische Sache 😦
Hab inzw. auch wieder einiges probiert aber es half wieder nichts hmpf
Im GAC hatte ich die Module noch nie registriert. Da sie im Programmroot liegen.
VS Versionen sind auch identisch und an Window Updates sind auf beiden Rechnern
auch nur SP1 installiert.
Was ist mit .NET SDK speziell gemeint ? Ich habe das .NET FX Setup 3.5 inkl. SP1 gezogen, was ca. 230 MB waren. Wie gesagt funktioniert alles zur Compile-Zeit
wunderbar.
Habe auch mal die View.dll aus dem App Ordner gelöscht um zu sehen ob er wirklich
diese Datei verwendet. Und ja, es kam der Fehler das das Modul "View.dll" nicht ge-
funden werden konnte. Ich verstehs einfach ned 😕
Hab nochmal einen Test gemacht. In der static Main(). Dort hatte ich bisher über Autofac alle Module per Dependency Injection erzeugen lassen. Das habe ich alles
rausgenommen und mal nur folgendes gemacht :
[STAThread]
static void Main()
{
aorLog log = new aorLog();
}
dort sollte eigentlich das Log Objekt instanziert werden. Ich kann mit Single Step
nun auch bis zu dieser Zeile debuggen. Bei der Erzeugung kommt dann derselbe
Fehler das eine Funktion aus der aorLog() keine Implementation hat. Das komische
ist, das die Funktion die angeblich fehlt, wirklich nicht implementiert ist oder wenn
dann höchstens in einer wesentlich älteren Revision. Ich hab alle Projektdateien
nach diesem Funktionsstring durchsucht und fand keinen einzigen Verweis darauf.
Ich weiß nicht wo er sich diese "Info" herholt O_o
Hab nochmal mit Lutz Roeders .NET Reflector meine Assemblies durchgeschaut.
Dabei fiel mir auf das die Funktion die er nicht findet, bzw. dessen Implementation,
wird wohl durch die IL erzeugt. Also ich hab eine Property in der aorLog() Klasse
die heißt :
public Dictionary<int, List<Vector3>> EntityPaths
{
get { return _paths; }
}
im .NET Reflector wir für diese Property diese Funktion angezeigt :
public Dictionary<int, List<Vector3>> get_EntityPaths()
{
return this._paths;
}
genau diese Funktion findet er auch nicht. ABer ich hab gesehen das für alle
Properties Funktionen dieser Art durch die IL wohl generiert werden also
get_ und set_.
Da hörts aber leider auch schonwieder mit dem Verständniss auf 😕
Hatte neue Hardware bekommen (MB, CPU, RAM) und nach dem Umbau gabs haufen Treiberprobleme im System, so das ich irgendwann gefrustet alles neu gemacht hab.
Hi! Wie sieht die Ereignisanzeige in Vista aus? Ist die blitze Blank (nur Information Icons) oder wimmelt es da von gelben (Warning) und roten (Fehler) Icons? Grüsse - sarabande
Danke für den Tip sarabande! Ansich soweit alles ok ! Aber ich habe auch Fehler gefunden die evtl damit zusammenhängen... und zwar :
Fehler beim Erstellen des Wiederherstellungspunkts auf dem Volume (Prozess = C:\Windows\system32\msiexec.exe /V; Beschreibung = Installed GACBrowser; Hr = 0x80070571).
.NET Runtime Optimization Service (clr_optimization_v2.0.50727_32) - Failed to compile: C:\Program Files\Microsoft Visual Studio 2008\Common7\IDE\WcfSvcHost.exe . Error code = 0x80131047
.NET Runtime Optimization Service (clr_optimization_v2.0.50727_32) - Failed to compile: C:\Program Files\Microsoft SQL Server\90\Tools\Publishing\1.2\Microsoft.NetEnterpriseServers.ExceptionMessageBox.dll . Error code = 0x80131047
.NET Runtime Optimization Service (clr_optimization_v2.0.50727_32) - Failed to compile: C:\Program Files\Microsoft SQL Server\90\Tools\Publishing\1.2\Microsoft.SqlServer.CustomControls.dll . Error code = 0x80131047
und noch ein paar weitere. .NET Runtime Fehler. Aber diese Fehler traten alle
am 21.01. auf und gestern hatte ich .NET 3.5 + SP1 neu installiert. Seitdem wurde
keiner mehr bezüglich .NET angezeigt.
hab in der main() nochmal alles auskommentiert. U.a. hatte ich dort auch
eine Catch Anweisung die eine Mogre.Exception abfing. Nun das interessante
an der Geschichte :
mit dem Catch Block und der Mogre Klasse erhielt ich beim Start sofort
eine "FileNotFound" Exception... Nam ich den Catch Block raus und damit
auch die darin enthaltene Mogre Klasse startete das Program ganz normal.
als ich wie ich schon schrieb das hier testete :
aorLog = new aorLog();
kam die TypeLoadException "... hat keine Implementation". Und Anfangs
in der View.dll kam der gleiche Fehler. Was mir nun aufgefallen ist das sich
die Fehler immer auf die Mogre.dll bezogen.
Der zeigt immer Module an die Klassen und Funktionen aus Mogre benutzen.
Nun bin ich schon einen Schritt näher dran, aber wirklich weiter bringts mich
noch ned.
EDIT:
wenn ich in der Main()
einfach nur ein :
Vector3 vec = new Vector3();
mache kommt der Fehler :
Eine von "Mogre, Version=1.4.8.0, Culture=neutral, PublicKeyToken=null" importierte Prozedur konnte nicht geladen werden.
der Fehler tritt bei der Debug DLL von Mogre auf...
binde ich stattdessen die Release DLL ein kommt wieder die altbekannte "FileNotFound" Exception
also hängts definitiv mit der Mogre Assembly zusammen ... nur was tun %/
also hängts definitiv mit der Mogre Assembly zusammen ... nur was tun %/
Hi! Ich würde mit C++ überprüfen, ob die Engine funktioniert. Grüsse - sarabande
Wie meinst du das genau ? Also ich denk eigentlich das es nur ein Referenzproblem ist, weil hier auf dem DeskPC hab ich exakt identische Mogre.dll Versionen wie drüben auf dem Notebook.
Gruß,
paddy
Wie meinst du das genau ?
Hi! Die Mogre.dll ist der Wrapper für Ogre. Wenn das Pendant von Vector3 vec = new Vector3(); in C# auch bei C++ zum Absturz führt, liegt der Hund woanders begraben. 😃 Grüsse - sarabande
!!!! SOLVED !!!!
mein Gott ihr glaubt nicht woran es lag... nachdem ich heute zum wiederholten Male VS2008 + .NET 3.5 nochmals komplett deinstalliert / installiert hab ging immer noch nix. Dann ging ich nochmal auf die Mogre Wiki Page und schaute die "install notes" an...
und da stand folgender Satz :
You will also need vcredist_x86.exe; check it out in the same URL above. Some users reported that applications executed correctly after installation (e.g.: Visual Studio 2005, Team Edition, Version 8.0.50727-42).
runtergeladen... installiert... und siehe da, alles läuft wie vor dem System re-install.
So unglaublich, das C++ Redistributables von VS2005 zu solch einem krassen Problem
führten... auf jedenfall weiß ichs nun für die Zukunft 😉
Trotzdem dickes Danke nochmal an alle die bei der "Bugsuche" geholfen haben 😃
Grüße und bis bald !
paddy