Domanda

Io sono il mantenimento di un progetto di VS2010, che ha una serie di librerie COM riferimenti incrociati. Sto provando a configurare il progetto in modo tale che un è edificabile da una stazione di lavoro casuale che ha installato VS2010. La workstation potrebbe essere sia a 32 e 64 bit, quindi se io progetto configura a "registro di uscita", la compilazione non riuscirà a costruire su macchina a 32 bit, poiché DLL a 64 bit non sarà possibile caricare chiamare DllRegisterServer.

Ecco un esempio: Typelib da riferimenti del progetto B Typelib dal progetto A. Progetto C farà riferimento del progetto B via seguente dichiarazione:

#import "B.tlb"

Dal momento che i riferimenti biblioteca A e B, quando B.tlb viene importato, i tentativi compilatore per i tipi di carico da A. Quindi, se A non è registrato, la compilazione fallirà con:

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

ho provato ad aprire B.tlb utilizzando l'applicazione OleView, ed è sicuro come l'inferno solo mostrando il nome del file a destra per riferimento Una libreria se è registrato utilizzando regsvr32.

Quindi, la mia domanda è: esiste un modo alternativo per i riferimenti di libreria per risolvere stessi correttamente, senza doversi registrare TLB, solo mettendo tutti i file nella stessa directory in qualche modo, o allegando una sorta di manifesto? Ad esempio, rinominare il TLB per una libreria come TLB o qualcosa del genere.

È stato utile?

Soluzione

Prova importare l'A.tlb riferimento prima, o l'elenco nella importazione di B.tlb utilizzando l'opzione include ().

# import le parti l'interfaccia che si intende utilizzare se si può evitare di portare in altri riferimenti inutilmente.

Altri suggerimenti

C'è una buona opzione: percorso metti in file tlb a VC ++ Directories -> eseguibile directory Ciò aggiunge il percorso alla variabile ambiente PATH che sarà data al compilatore. In base a questo: http://msdn.microsoft.com/en-us/library /sce74ah7.aspx tutto tLB Citato in importata vengono cercati solo in PATH e LIB.

Il modo più semplice è posto tutti i file * TLB in dir quando vengono utilizzati.

Dipende dalla vostra configurazione del progetto. Copiare tutti i file * tlb in: $ (OutDir), $ (ProjectDir), dir dove si trova il file con #import, dir quando si genera * TLB etc

Saluti, Mariusz

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top