Frage

Ich bin die Aufrechterhaltung ein VS2010-Projektes, das eine Reihe von Querverweisen COM-Bibliotheken hat. Ich versuche, das Projekt in einer solchen Art und Weise zu gestalten, dass sie von einem zufälligen Workstation erstellbar ist, die hat VS2010 installiert. Die Workstation kann sowohl 32- als auch 64-Bit sein, also wenn ich configure Projekt „registriert Ausgang“, wird der Build auf 32-Bit-Maschine zu bauen, fehlschlagen, da 64-Bit-DLL nicht möglich sein wird, zu laden DllRegisterServer zu nennen.

Hier ist ein Beispiel: Typelib von Projekt B Referenzen typelib aus Projekt A Projekt C wird über die folgende Anweisung Projekt B Referenz:

#import "B.tlb"

Da Bibliothek B Referenzen A, wenn B.tlb importiert wird, der Compiler versucht, Lasttypen von A. Also, wenn A nicht registriert ist, wird die Kompilierung fehlschlagen mit:

error C4772: #import referenced a type from a missing type library ...

Ich habe versucht B.tlb mit der OleView Anwendung zu öffnen, und es ist sicher wie die Hölle nur richtige Dateinamen für Bibliothek Eine Referenz zeigt, wenn es registriert ist regsvr32 verwenden.

Also, meine Frage ist: Gibt es eine alternative Möglichkeit für Bibliotheksverweise sich richtig zu lösen, ohne TLB registrieren zu müssen, nur um alle Dateien im selben Verzeichnis setzt irgendwie, oder eine Art Manifest Befestigung? Benennen Sie beispielsweise den TLB für eine Bibliothek als TLB oder etwas dieser Art.

War es hilfreich?

Lösung

Versuchen Sie, die referenzierten A.tlb zuerst importieren oder Liste, um es in den Import von B.tlb die mit include () Option.

Nur #import die Teile die Schnittstelle planen Sie zu verwenden, wenn Sie nicht unnötig in anderen Referenzen zu bringen vermeiden.

Andere Tipps

Es ist eine gute Option: add Pfad zu den TLB-Dateien auf VC ++ Verzeichnisse -> Executable-Verzeichnisse Dies fügt den Pfad zu PATH-Umgebungsvariable, die an den Compiler gegeben werden. Nach dieser: http://msdn.microsoft.com/en-us/library /sce74ah7.aspx alle TLB REFERENCED in importiert man nur in PATH und LIB durchsucht werden.

Der einfachste Weg, es ist Platz alle * TLB-Dateien in dir, wenn sie verwendet werden.

Abhängig von Ihrer Projektkonfiguration. Kopieren Sie alle * TLB-Dateien in: $ (OutDir), $ (ProjectDir), Richt wo Datei mit # Import, Richt, wenn Sie generieren * TLB etc

Viele Grüße, Mariusz

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top