Mam pliki tlb, które zawierają deklarację funkcji, której potrzebuję użyć.Jak używać plików tlb w macierzystym projekcie C++
Jeśli używam
#import "type_library.tlb"
mogę correclty odwołać z funkcji z mojego kodu:
tlb_namespace::required_function();
Ale kiedy mogę skompilować projekt łącznik mówi, że tlb_namespace :: required_function jest nierozwiązany symbol zewnętrzny .
Jak mogę z powodzeniem zbudować tego rodzaju projekt?
EDIT:
Użyłem tej samej biblioteki w projekcie typu dostępu Dummy VBA. Dodałem odwołanie do biblioteki typów i zauważyłem, że niektóre funkcje zawarte w bibliotece typów są poprawnie wywoływane. Ale niektóre z nich nie są. VBA mówi, że nie może zlokalizować punktu wejścia w powiązanej bibliotece dll.
Czy to może wyjaśnić nierozwiązany zewnętrzny symbol podczas budowania aplikacji C++?
Mam również zauważyć, że funkcja braku deklarowane są w TLB jak ten:
UPPER_function_name
ale w dll są zadeklarowane tak:
Upper_function_name
To może być problem?
Czy można rozwiązać ten błąd bezpośrednio modyfikując plik binarny tlb lub dll?
jest '#import "type_library.tlb" 'jedyna dyrektywa #import od tego tlb w twoim projekcie. Czy znajduje się on w tym samym cpp co wywołanie funkcji? W jaki sposób zdefiniowano 'required_function' w wygenerowanych plikach .tlh i .tli? –
@ZdeslavVojkovic Projekt na razie jest bardzo prosty, więC#import jest tylko jeden i znajduje się w tym samym pliku .cpp połączenia. Próbowałem wygenerować pliki .tlh i .tli ... pojawiają się tylko wtedy, gdy przejdę do właściwości projektu \ Preprocessor Generate Preprocessed file. Jednak prawdopodobnie nie dodaję ich w poprawnym trybie do projektu, ponieważ jeśli to zrobię, otrzymam inny błąd łącznika. – sblandin
nie musisz ich dodawać. Zostaną one utworzone podczas kompilacji w twoim folderze release/debug, więc szukaj ich tam. –