Ho un file tlb che contiene alcune dichiarazioni di funzione che devo usare.Come utilizzare i file tlb in un progetto C++ nativo
Se uso
#import "type_library.tlb"
posso correclty riferimento alla funzione dal mio codice:
tlb_namespace::required_function();
Ma quando compilo il progetto il linker dice che tlb_namespace :: required_function è un simbolo esterno non risolto .
Come posso costruire con successo questo tipo di progetto?
EDIT:
Ho usato la stessa libreria dei tipi in un progetto di Access Dummy VBA. Ho aggiunto il riferimento alla libreria dei tipi e ho notato che alcune delle funzioni contenute nella libreria dei tipi sono chiamate correttamente. Ma alcuni di loro non lo sono. VBA dice che non è possibile individuare il loro punto di ingresso nella DLL correlata.
Questo può spiegare il simbolo esterno non risolto durante la creazione dell'app C++?
Ho anche notato che la funzione non riuscendo sono dichiarati nel TLB come questo:
UPPER_function_name
ma nel dll sono dichiarate in questo modo:
Upper_function_name
Può essere questo il problema?
È possibile risolvere questo tipo di errore modificando direttamente il file binario o la DLL?
è '#import "type_library.tlb" 'l'unica direttiva #import per questo tlb nel tuo progetto. Risiede nello stesso cpp della chiamata di funzione? Come viene definito 'required_function' nei file .tlh e .tli generati? –
@ZdeslavVojkovic Il progetto per ora è molto semplice quindi #import è solo uno e risiede nello stesso file .cpp della chiamata. Ho provato a generare file .tlh e .tli ... compaiono solo se vado nella proprietà del progetto \ Preprocessore Genera file preelaborato. Tuttavia probabilmente non li aggiungo in una modalità corretta al progetto perché se lo faccio ottengo un altro errore di linker. – sblandin
non è necessario aggiungerli. Verranno creati durante la compilazione nella cartella di rilascio/debug, quindi cercali qui. –