ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
683
683
EMPFEHLEN
-
Hi
Wir haben eine etwas ältere Anwendung die in Delphi 2006 geschrieben ist. Wir wollen aber das ganze Projekt bald auf .NET umstellen (hoffentlich innerhalb des nächsten Jahres) und haben deshalb schon einmal begonnen die Berichte auf MS Reporting Service umzustellen. Um diese anzuzeigen haben wir eine ClassLibrary die entweder über .NET oder über COM angesprochen werden kann.
Für die COM-Schnittstelle habe ich ein Interface welches eigentlich nur eine Methode beinhaltet und eine Klasse die dieses und ein weiteres Iterfaces implementiert.
Lange Rede kurzer Sinn, die TypeLibrary für Delphi wird erfolgreich erzeugt und der Delphi-Code zum instanziieren des COM-Objektes wird erfolgreich kompiliert. Allerdings bekomme ich zur Laufzeit die Meldung dass die Komponente mit der GUID ... nicht gefunden werden kann. Die GUID entspricht der GUID die ich in meiner Klasse eingetragen habe.
das Interface
Code csharp:1 2 3 4 5 6 7 8 9 10 11
[assembly: AssemblyKeyFile("DynamicreportViewer.snk")] // GAC namespace Stiki.DynamicReportViewer { [ComVisible(true)] [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] [Guid("A6659361-1625-5555-931C-36014B146679")] public interface ICOMReportViewer { void ShowReport(string reportName, String[]parameters); } }
die implementierende Klasse
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
namespace Stiki.DynamicReportViewer { // Don't generate class interface - inheritance using interfaces! [ClassInterface(ClassInterfaceType.None)] [Guid("C6659361-1625-4746-931C-36014B146679")] // <----- Diese GUID wird nicht gefunden [ComVisible(true)] [ProgId("Stiki.DynamicReportViewer.ReportViewer")] public class ReportViewer : IReportViewer, ICOMReportViewer { private static ReportViewer singleton; private ReportViewer() { } public static ReportViewer GetReportViewer() { if (singleton == null) singleton = new ReportViewer(); return singleton; } void ICOMReportViewer.ShowReport(string reportName, String[]parameters) { // tue dies und das } }// end class }
Um die DLL zu registrieren rufe ich regasm bla.dll /tlb /codebas auf und nach noch gacutil -i bla.dll. Eigentlich sollte das Ding doch dann gefunden werden?
-
Also irgendwie funktioniert es jetzt. Ich habe einfach regasm ohne den /tlb parameter aufgerufen.
Allerdings zerschießt es mir jetzt irgendeinen Assemblercode (accessviolation at 0x77... write of address 0x000... Process stopped)!
-
12.03.10 11:52 #3
- Registriert seit
- Mar 2010
- Beiträge
- 3
Hallo,
ich habe genau das selbe Problem. Ich brauche eine .Net Klasse die ich unter COM verwenden muss.
Meine Umgebung ist VS 2008 in C#.
Dazu habe ich einen Schlüssel mit sn -k meiner DLL erzeugt und in genau das selbe Verzeichnis eingefügt.
Wenn ich jetzt allerdings den Auffruf
starte kommt immer die Fehlermeldung das mein .snk Datei nicht gefunden wurde.Code :1
[assembly: AssemblyKeyFile("TemperatureComponent.snk")]
Kann mir vielleicht jemand noch einen Tip geben?
Vielen Dank.
Grüße Chris
Ähnliche Themen
-
DLL wird nicht gefunden
Von Va7e im Forum .NET Application und Service DesignAntworten: 1Letzter Beitrag: 25.11.09, 20:59 -
Startvolumen wird nicht gefunden
Von knefie im Forum Mac OSAntworten: 3Letzter Beitrag: 12.10.06, 19:43 -
dll wird nicht gefunden
Von jokey2 im Forum VisualStudio & MFCAntworten: 3Letzter Beitrag: 15.11.05, 09:26 -
CD-Rom wird nicht in 98 gefunden!
Von Potestas im Forum HardwareAntworten: 0Letzter Beitrag: 28.09.04, 13:24 -
IF bedigung wird nicht erfüllt aber trotzdem ausgeführt ;( bitte script ansehn
Von thevibe im Forum PHPAntworten: 7Letzter Beitrag: 24.07.03, 12:58





Zitieren
Login





