Hallo,
habe ein akutes Problem mit einer managed cpp .net dll:
Wenn die Dll als Release mit Visual Studio 2003 (.NET Framework 1.1.4322 SP1) .Net compiliert ist, gibt es direkt beim Aufruf einer DLL-Funktion aus C# heraus folgende Fehlermeldung: “Eine nicht behandelte Ausnahme des Typs 'System.NullReferenceException' ist in Testumgebung.exe aufgetreten.“
Dieser Fehler tritt direkt beim Aufruf der Funktion auf, es erfolgt offenbar erst gar kein Einsprung in die DLL-Funktion! Ich kann jedoch keinen offensichtlichen Fehler erkennen, vor allem verstehe ich nicht warum offenbar nichtmal in die DLL-Funktion eingesprungen werden kann.
Im Disassembly-Fenster sieht man, dass der Fehler bei der Instruktion
00000014 call dword ptr ds:[002769A8h]
auftritt – wieso geht dieser call offenbar schief?
Nachfolgend und anbei die DLL-Funktion incl. C#-Projekt (bereits weitestgehend vereinfacht, sehr übersichtlich, bitte selbst testen!):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| void TestClass::Testfunc([Out] TestStruct (&testList) __gc[]) { testList = new TestStruct __gc[5];
for (int i=0; i<5; i++) { if (i>0) { testList[i].curDivTime = testList[i].curDivTime - testList[i-1].curDivTime; } } } |
Wichtig: die DLL muss als RELEASE compiliert sein, das C#-Projekt kann als DEBUG oder als RELEASE erstellt sein.
Moderiert von
Christian S.: C#-Tags hinzugefügt