tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
683
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von mschlegel
    mschlegel mschlegel ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    202
    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?
     

  2. #2
    Avatar von mschlegel
    mschlegel mschlegel ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    202
    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)!
     

  3. #3
    chrisda-87 chrisda-87 ist offline Grünschnabel
    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
    Code :
    1
    
    [assembly: AssemblyKeyFile("TemperatureComponent.snk")]
    starte kommt immer die Fehlermeldung das mein .snk Datei nicht gefunden wurde.

    Kann mir vielleicht jemand noch einen Tip geben?
    Vielen Dank.

    Grüße Chris
     

Ähnliche Themen

  1. DLL wird nicht gefunden
    Von Va7e im Forum .NET Application und Service Design
    Antworten: 1
    Letzter Beitrag: 25.11.09, 20:59
  2. Startvolumen wird nicht gefunden
    Von knefie im Forum Mac OS
    Antworten: 3
    Letzter Beitrag: 12.10.06, 19:43
  3. dll wird nicht gefunden
    Von jokey2 im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 15.11.05, 09:26
  4. CD-Rom wird nicht in 98 gefunden!
    Von Potestas im Forum Hardware
    Antworten: 0
    Letzter Beitrag: 28.09.04, 13:24
  5. Antworten: 7
    Letzter Beitrag: 24.07.03, 12:58