Произошла ошибка при попытке импортировать & quot; tlb & quot; файл. VS 2013 сказал, что он не может найти & lt; tlh & quot; файл

Я пытаюсь импортировать файл, как показано ниже:

#import "C:/xxxx/Proj/msd60.tlb"

Но он говорит мне, что не может открыть исходный файл «C: /xxxx/Proj/msd60.tlh»

Файл tlb фактически существует в том месте, куда я его указываю.

По моему мнению, VS может разделить файл tlb на файл tlh (как файл заголовка) и файл tli (как файл cpp). Так что-то случилось, и сделать это не может создать файл TLH? Но я не знаю что это. Между тем, другой cpp в другом проекте может открыть «msd60.tlb». Так что с окружающей средой могут не существовать проблемы.

Как это решить?

0

Решение

У меня была такая же проблема с msado20.tlb в VS2015. Но у меня была такая же проблема в VS2013. После некоторого исследования я прочитал, что может быть некоторая проблема с абсолютными путями в VS, при этом лучше всего было попробовать относительный путь (что весьма беспокоит).

В моем случае проект расположен на другом диске, поэтому относительный путь будет очень длинным, поэтому я вместо этого скопировал файл msado20.tlb в папку своего проекта и заново собрал решение. В этом случае это сработало. Я знаю, что это скорее взлом, чем решение, но это может помочь другим. Директива выглядит так:

#import "msado20.tlb" no_namespace rename("EOF", "adoEOF")

Если кто-то попробует относительный путь, было бы интересно узнать наверняка, как он работает. Копирование файла в папку моего проекта — не решение проблемы, а взлом

1

Другие решения

Может быть проблема со свойством, которое вы установили для вывода компилятора MIDL.
В настройках вашего проекта используйте относительный путь для местоположения .tlb, а не абсолютный путь. Visual Studio имеет причуду, в которой иногда не учитываются абсолютные пути.

вперемежку
Если возможно, попробуйте снова создать .tlb вручную.

REGASM.exe "C:\Pathtoyourdll\your.dll"
0

По вопросам рекламы [email protected]