ImportLib ссылается на полный путь в MIDL - PullRequest
0 голосов
/ 05 мая 2018

Я обнаружил, что с этим синтаксисом я получу ошибку компиляции:

importlib("MSADDNDR.dll");

Ошибка будет:

error MIDL2337 : unsatisfied forward declaration : _IDTExtensibility2 [ Coclass '_Extension'  ]

Но это ложь, вроде. Посмотрев ранее в вывод, мы видим это:

warning MIDL2015 : failed to load tlb in importlib: : MSADDNDR.dll

Итак, если мы изменим атрибут для включения полного пути:

importlib("C:\Program Files (x86)\Common Files\Designer\MSADDNDR.dll");

Теперь он будет правильно скомпилирован .... но ... это ссылка на 32-битную DLL. Предположим, я хочу кросс-компиляции? Поэтому я указываю опцию /amd64 для MIDL. Это все еще успешно компилируется. Я не могу найти какую-либо документацию, которая может предложить, что использование полного пути к потенциально неправильной DLL-библиотеке битности для importlib вызовет проблемы.

Может ли кто-либо еще подтвердить или опровергнуть, если есть потенциальные проблемы или может быть лучший подход, чтобы избежать внедрения полного пути?

Интересно, что когда я загружаю сгенерированный файл .tlb в oleview, полного пути больше нет; что говорит о том, что это не проблема, но я бы хотел убедиться, что это так.

...