![]() |
ComObject
Hallo
Ich versuche seit zwei Tagen eine C# Datei in Delphi 7 einzubauen doch scheitere kläglich. Momentan versuche ich es über ComObject zu machen. hier ist mein Test Code in C#
Delphi-Quellcode:
Habe als Post Buildereignis
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Reflection; namespace testfordelphi { [ComVisible(true)] [Guid("454F8365-58CA-4583-9991-5EF798997B73")] public interface IADDIF { void ShowHello(); int Add(int i1, int i2); } [ClassInterface(ClassInterfaceType.None)] [Guid("60E14408-876F-4017-AF09-0131D8C82F5A")] public class Class1 : IADDIF { public int Add(int i1, int i2) { return i1 + i2; } public void ShowHello() { MessageBox.Show("Huhu"); } } } csc /t:library /out:sqlmanager.dll ragasm sqlmanager.dll /tlb:sqlmanager.tlb Wenn ich nun in Delphi die Typbibliothek importiere und die Klasse einbinde mit
Delphi-Quellcode:
fliegt der in der Zeile
procedure testsql();
var intfRef: IADDIF; begin intfRef := CreateComObject(IID_IADDIF) as IADDIF; intfRef.ShowHello; end; intfRef := CreateComObject(IID_IADDIF) as IADDIF; raus und meint: EOleSysError Klasse nicht registriert. nun ist mir aufgefallen, das in c# beim erstellen folgende warnung ist: Warnung 2 "...bin\Debug\testfordelphi.dll" enthält keine Typen, die für COM-Interop registriert werden können. testfordelphi Was kann ich machen damit ich die Funktionen in Delphi aufrufen kann? Was mache ich falsch? |
AW: ComObject
Du musst deine C# Klasse über einen Out-Of-Process Server installieren und nicht über eine DLL, da Delphi Win32 kein DLL mit .NET laden kann. Du kannst es mit Delphi Prism versuchen, da solltest du C# Assemblys direkt einbinden können. Andernfalls kannst du nur ein C# COM Server registrieren, starten und benutzen. Zudem musst du explizit in C# eine 32Bit Assembly erstellen.
|
AW: ComObject
Wenn du dein Interface auskommentierst und ClassInterfaceType.None an der Klasse stehen hast, gibt es für regasm tatsächlich nix zu registrieren.
Wenn du deine C# Assembly ohne COM in Delphi nutzen willst gibt es auch dafür eine Lösung: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz