Я пытался сгенерировать обёртку для нужных мне TLB файлов из консолей разных версий MS Visual Studio следующим образом:
tlbimp «C:SDKAutodeskAutoCADObjectARX 2010inc-x64acax18ENU.tlb» /out:»C:SDKAutodeskAutoCADObjectARX 2010inc-x64acax18ENU.Interop.dll» /namespace:AutoCAD /machine:x64
tlbimp «C:SDKAutodeskAutoCADObjectARX 2010inc-x64axdb18enu.tlb» /out:»C:SDKAutodeskAutoCADObjectARX 2010inc-x64axdb18enu.Interop.dll» /namespace:AXDBLib /machine:x64
Если использовать консоль VS 2010 или VS 2012, то обёртка будет создана для .NET 4.0. Однако в AutoCAD 2010 использует .NET 3.5, поэтому данный результат мне не подходит…
Получить нужный результат мне удалось лишь воспользовавшись консолью VS 2008.
На моей машинке, в составе установленных SDK
утилиту tlbimp.exe мне удалось найти в каталогах:
- C:Program Files (x86)Microsoft SDKsWindowsv8.1AbinNETFX 4.5.1 Tools
- C:Program Files (x86)Microsoft SDKsWindowsv8.0AbinNETFX 4.0 Tools
- C:Program Files (x86)Microsoft SDKsWindowsv7.0ABin
Кроме того, утилита была найдена и в каталоге
- C:Program Files (x86)Microsoft Visual Studio 8SDKv2.0Bin
В обозначенных выше первых трёх каталогах, я пробовал создавать конфигурационный файл tlbimp.exe.config следующего содержимого:
<?xml version=»1.0″ encoding=»utf-8″?>
<startup>
<supportedRuntime version=»v2.0.50727″/>
</startup>
Затем из cmd.exe, перейдя в каталог указанной утилиты, запустил такую команду:
C:Program Files (x86)Microsoft SDKsWindowsv8.1AbinNETFX 4.5.1 Tools>tlbimp
«D:SDKAutodeskAutoCADObjectARX 2010inc-x64acax18ENU.tlb» /out:»D:SDKAutodeskAutoCADObjectARX 2010inc-x64acax18ENU.Interop.dll» /namespace:AutoCAD /machine:x64
Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна. Дополнительные сведения содержатся в журнале событий приложений или используйте программу командной строки sxstrace.exe для получения дополнительных сведений.
Обозначенный выше результат наблюдался для версий v8.1A и v8.0A. Для версии v7.0A в перенастройке не было необходимости, т.к. на выходе и так получается библиотека для .Net 2.0.
C:Program Files (x86)Microsoft SDKsWindowsv8.1AbinNETFX 4.5.1 Tools>
C:Program Files (x86)Microsoft SDKsWindowsv8.1AbinNETFX 4.5.1 Tools>tlbimp
«D:SDKAutodeskAutoCADObjectARX 2010inc-x64acax18ENU.tlb» /out:»D:SDKAutodeskAutoCADObjectARX 2010inc-x64acax18ENU.Interop.dll» /namespace:AutoCAD /machine:x64
Microsoft (R) .NET Framework Type Library to Assembly Converter 4.0.30319.33440
Copyright (C) Microsoft Corporation. All rights reserved.
TlbImp : warning TI3019 : Interface ‘IAcadShadowDisplay’ is marked as [dual], but does not derive from IDispatch. It will be converted as an IUnknown-derived interface.
TlbImp : Type library imported to D:SDKAutodeskAutoCADObjectARX 2010inc-x64
acax18ENU.Interop.dll
Вывод:
- SDK v7.0A — для .NET 2.0, 3.0, 3.5 SP1
- SDK v8.1A или v8.0A — для .NET 4.0, 4.5, 4.5.1