Я создал файл ' Sample.Dll ' и ' sample.tlb ', содержащий функцию, которая возвращает значение, используя библиотеку классов Visual Studio 2005 для доступа к ней в Microsoft.Макрос Office Excel для получения значения ячеек.
I Установите некоторые свойства в Visual Studio 2005 перед сборкой Solution. Изменения:
- Приложение -> Информация о сборке-> Сделать сборку COM видимой Флажок установлен.
- Компилировать -> Зарегистрировать для COM-взаимодействия Флажок установлен (При этом создается файл 'Sample.tlb')
- Подписание -> ПодписатьAssembly.Check Box Checked (который создает файл 'Sample.snk')
Я создаю решение и в папке Release есть три файла
- Sample.Dll
- Sample.tlb
- Sample.snk
- sample.Pdb
- sample.xml
Теперь я помещаю ' sample.dll ' и ' sample.tlb ' в System32, затем регистрирую семплle.dll на другой машине два раза
- от gacutil / i sample.dll
- от RegAsm sample.dll
Теперь я открываю Excel, затем создаю макрос и добавляю ссылку на файл sample.tlb из системы 32 и библиотеки объектов данных Microsoft ActiveX 2.1 и библиотеки Microsoft DAO 3.6.Теперь я создаю объект из файла класса DLL.
Cells(1,1)=object.Function()
Возвращает значение на той же машине, где выполняется sample.Dll, но на другой машине выдает ошибку, когда выполняет функцию и не выполняетвернуть значение этих ячеек.функция выдала код ошибки.
1. Код ошибки 429 2. Код ошибки -2147024894
Я исследовал эти две ошибки, но не получил какого-либо сильного результата.почему это происходит на любой другой машине, где я не скомпилировал sample.dll?Как создать универсальный Dll, который отлично работает в каждой конфигурации машины?или какой шаг я не выполнил?