2009-04-15 3 views
1

Ich habe eine COM-DLL in C# .NET 2.0 erstellt und erstellt einen TLB von der Assembly mit dem .NET-Tool regasm.Problem mit .NET-DLL in Borland C++ Builder 4

In Borland C++ Builder 4.0 gehe ich zu Project-> Import Type Library-> und finden Sie meine DLL-Typ-Bibliothek dort und klicken Sie auf "OK", um es zu importieren.

BCB erstellt eine HardwareCheck_TLB.cpp & HardwareCheck_TLB.h Datei.

In einer cpp-Datei des Projekts möchte ich die DLL verwenden, die ich setze: #include "HardwareCheck_TLB.h" an der Spitze.

Dann in Code, wenn ich versuche, ein Objekt dieses Typs in Code zu deklarieren: IHardwareCheck hc = new IHardwareCheck();

ich den folgenden Compiler-Fehler: [C++ Error] Unit1.cpp (22): E2352 Kann nicht Instanz der abstrakten Klasse erstellen 'IHardwareCheck'. [C++ Fehler] Unit1.cpp (22): E2353 Klasse "IHardwareCheck" ist abstrakt wegen '__stdcall IHardwareCheck :: IsExpress (wchar_t * *, TOLEBOOL *) = 0'.

Haben Sie irgendwelche Ideen, wie Sie diesen Fehler loswerden?

Danke!

Antwort

0

Es sollte einige TCoClassCreatorT erzeugen <> Typen, die Sie Sie

CoHardwareCheck::Create(&hc) 

tun können, kann am tlibimp.exe suchen, die Borland mit seinen Produkten vertreibt. Ich habe das schon vorher mit diesem Programm gemacht, konnte aber nie die Co Klassen generieren, vielleicht hast du mehr Glück.

2

COM-Klasse kann nicht mit neuen erstellt werden. Sie müssen den CoCreateInstance-Systemaufruf (siehe MSDN) oder einen von Borland bereitgestellten Wrapper (wie den von zer0_ring genannten) verwenden.