Я обнаружил, что с этим синтаксисом я получу ошибку компиляции:
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
, полного пути больше нет; что говорит о том, что это не проблема, но я бы хотел убедиться, что это так.