2009-07-28 11 views
2

Derzeit bin ich mit der Aussage:Wie programmierst du eine Tlb-Datei in C++?

#import "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\test.tlb" named_guids 

Aber ich den Ordnerpfad programmatisch zu bekommen. d. h. "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"

Ich muss test.tlb von diesem Pfad laden, der sich in einer Variablen befindet, zB folderpath. Ich muss die Tlb programmatisch importieren, indem Sie folderpath+test.tlb verketten. Wie kann ich das machen?

+0

Das sieht sehr ähnlich wie ein Betrüger von http://stackoverflow.com/questions/1108537/how-to-import-a-tlb-and-a-namespace-in-c-at-runtime-when-some -condition-meets – sharptooth

+0

Und welche Aufgabe möchten Sie überhaupt erfüllen? – sharptooth

+0

Warum befindet sich die TLB des Projekts, das Sie selbst kompiliert haben, im .NET-Verzeichnis? Wie ist es dorthin gekommen? – sharptooth

Antwort

2

Sie können die Prog-ID angeben, wenn dies hilft, zum Beispiel:

#import "progid:Outlook.Application" named_guids 

Dies schlägt einen hartcodierte Pfad.

+0

Wie kann ich genau dies tun. Angenommen, mein C# -Namespace ist TestNm und die Schnittstelle ist ITest-Klasse ist SqlClass schließlich myy tlb ist Test.tlb dann #import "progid: Test.tlb" ist korrekt ... – Cute

+0

#import "Guid: 35145a33-e434-49dc-92cf -e056c508525a "named_guids Ich habe es so versucht. Aber es zeigt, kann die Bibliothek nicht öffnen "Guid: 35145a33-e434-49dc-92cf-e056c508525a" keine solche Art von Bibliothek – Cute

+0

Es kann hilfreich sein, wenn Sie meinen Kommentar beantworten .. – Cute

2

Um programmgesteuert eine TLB-Datei (COM-Typenbibliothek) zur Laufzeit zu laden, können Sie LoadTypeLibraryEx verwenden.

Ein TLB, der zur Kompilierzeit importiert wird, sollte an einen bekannten und konsistenten Ort kopiert werden, an dem er während eines Bildes gefunden werden kann. Wenn Sie in einer Teamumgebung arbeiten, möchten Sie wahrscheinlich den TLB in Ihrem SCM-System überprüfen, sodass alle Benutzer dieselbe Version der TLB-Datei von demselben relativen Speicherort aus referenzieren.

Zusätzlich kann der Pfad, in dem sich der TLB befindet, dem Compiler als Include-Verzeichnis zur Verfügung gestellt werden (wie für Header-Dateien).