У замечательной программы FineReader есть СОМ-интерфейс.
Рутовый объект в этом СОМ'e называется Engine, через СОМ создать Engine нельзя, зато можно создать дёрнув специальную DLL-ку.
В примитивном виде всё отлично.....DLL-Import и всё в ожуре:
Дёргаем DLL, выставляем метод в .NET
Методом создаём объект Engine и крутим-вертим как хотим
но путь до этой самой DLL'ки может быть произвольным, а DLL-Import не параметризуемый.
Пробовал через Reflection на-лету откомпилировать тонкую прослойку, наткнулся на супер задачу: метод createEngineObject (в DLL) жрёт параметр по ссылке, собственно тип объекта Engine, естественно, этот самый тип лежит в COM интерфейсе, и транслировать этот самый тип в "на лету откомпилированную прослойку" никак.
Добавить DLL в проект — тоже нельзя, так как за ней тянется весь FineReader c его лицензионной политикой.
Я знаю теорию решения проблемы на C++, но не умею на нём писать.
СОБСТВЕННО ВОПРОС:
Есть ли вариант на .NET вызвать DLL, лежащую в произвольном пути?