Я использую IKVM.NET
, чтобы преобразовать библиотеку Java
(сигнально, Strata ) в библиотеку .NET
.Вот шаги, которые я выполняю:
- Я загружаю последний выпуск Strata .
- Я распаковываю все файлы
JAR
, содержащиеся в папке lib
архива до C:\Strata\
, включая следующие вспомогательные библиотеки: - commons-math3-3.6.1.jar
- guava-26.0-jre.банка
- joda-beans-2.4.0.jar
- joda-convert-2.2.0.jar
- slf4j-api-1.7.25.jar
- Я создаю ключевой файл для библиотеки, которую хочу создать, с помощью команды
sn -k "C:\Strata\Strata.snk"
. - Используя двоичный компилятор байт-кода
IKVM.NET
, я конвертирую JAR
файлы Strata
в библиотеку .NET
с помощью следующей команды: ikvmc -out:"C:\Strata\Strata.dll" -keyfile:"C:\Strata\Strata.snk" -assembly:Strata -version:2.2.0 -fileversion:2.2.0 -target:library -platform:anycpu -recurse:"C:\Strata\*.jar"
.
После того, какописанный выше процесс выполнен, даже если отображаются несколько предупреждений, касающихся отсутствующих классов, я получаю рабочую оболочку .NET
из Strata
.Если я создам новый проект Visual Studio
со ссылкой на сборку Strata.dll
, я могу без проблем использовать его классы и методы.
Чего бы я действительно хотел добиться, так это заставить работать оболочку Excel VBA
макросов, чтобы я мог создавать экземпляры и использовать Strata
классы в сабвуферах в соответствии с содержанием листов.
Это то, что я пробовал до сих пор, но безрезультатно:
- Я регистрирую все библиотеки
IKVM.NET
и оболочку Strata
в GAC
следующим образом: gacutil /i "C:\IKVM\IKVM.*.dll"
, gacutil /i "C:\Strata\Strata.dll"
. - Я регистрирую оболочку
Strata
как *Компонент 1072 *, и я создаю его библиотеку типов следующим образом: regasm /codebase /tlb "C:\Strata\Strata.dll"
.
Теперь, когда я открываю Excel
и захожу под Development > Visual Basic > Tools > References...
, я вижу TLB
файл Strata
(находится в "C: \ Strata \ Strata.tlb"), и я могу добавить его в текущий проект.Но как только я что-то набираю, окно или я открываю Objects Browser
, Excel
вылетает без предоставления какой-либо значимой информации о происходящем.
Я совершенно не в курсе этой проблемы.
Мой процесс регистрации правильный?Нужно ли регистрировать библиотеки IKVM.NET
и создавать их библиотеки типов?Стоит ли включать их в проект Excel VBA
вместе с библиотеками типов оболочки Strata
?Может ли проблема быть вызвана тем, что я использую x64-версию Excel
, а оболочка была скомпилирована в AnyCPU
?Нужно ли редактировать обертку, добавив атрибут ComVisible
в каждый открытый класс?Может ли эта проблема быть связана с тем, что оболочка содержит странные имена методов, такие как «\ _Build01_ \ p»?