Ich habe eine Tlb-Dateien, die einige Funktionsdeklaration enthält, die ich verwenden muss.Wie verwendet man Tlb-Dateien in einem nativen C++ - Projekt
Wenn ich
#import "type_library.tlb"
ich Correclty die Funktion von meinem Code verweisen kann:
tlb_namespace::required_function();
Aber wenn ich das Projekt kompilieren der Linker sagt, dass tlb_namespace :: required_function ist ein ungelöstes externes Symbol .
Wie kann ich diese Art von Projekt erfolgreich erstellen?
EDIT:
ich die gleiche Art Bibliothek in einem Dummy VBA Access-Projekt verwendet haben. Ich habe den Verweis auf die Typbibliothek hinzugefügt, und ich habe festgestellt, dass einige der in der Typbibliothek enthaltenen Funktionen korrekt aufgerufen werden. Aber einige von ihnen sind nicht. VBA sagt, dass es ihren Einstiegspunkt in der verwandten DLL nicht finden kann.
Kann dies das nicht aufgelöste externe Symbol beim Erstellen der C++ App erklären?
Ich habe auch bemerkt, dass die fehlerhafte Funktion im TLB wie folgt deklariert werden:
UPPER_function_name
aber in der DLL werden wie folgt erklärt:
Upper_function_name
Kann dies das Problem sein?
Ist es möglich, diese Art von Fehler zu lösen, direkt die binäre tlb-Datei oder dll zu ändern?
ist '#import "type_library.tlb" lösen 'die einzige # Import-Anweisung für diese TLB in Ihrem Projekt. Befindet es sich in derselben cpp wie Funktionsaufruf? Wie ist 'required_function' in den generierten .tlh- und .tli-Dateien definiert? –
@ZdeslavVojkovic Das Projekt für jetzt ist ein sehr einfaches Projekt, also ist der Import nur einer und befindet sich in derselben CPP-Datei des Aufrufs. Ich habe versucht, .tlh und .tli Dateien zu erzeugen ... sie erscheinen nur, wenn ich zur Projekteigenschaft \ Preprocessor Erzeuge vorverarbeitete Datei gehe. Allerdings füge ich sie wahrscheinlich nicht in einem korrekten Modus zum Projekt hinzu, da ich sonst einen Linker-Fehler bekomme. – sblandin
Sie müssen sie nicht hinzufügen. Sie werden während des Builds in Ihrem Release/Debug-Ordner erstellt, also suchen Sie sie dort nach. –