我正在使用IKVM.NET
来将Java
库(信号地为Strata)转换为.NET
库。这是我执行的步骤:
JAR
文件夹中包含的所有lib
文件解压缩到C:\Strata\
,包括以下辅助库:
sn -k "C:\Strata\Strata.snk"
为要创建的库生成密钥文件。IKVM.NET
的二进制字节码编译器,通过以下命令JAR
将Strata
的{{1}}文件转换为.NET
库。 / li>
完成上述过程后,即使显示了有关缺少类的一些警告,我仍然获得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
类。 / p>
这是我到目前为止尝试过的,但无济于事:
Strata
库和IKVM.NET
包装器注册到Strata
中,如下所示:GAC
,gacutil /i "C:\IKVM\IKVM.*.dll"
。gacutil /i "C:\Strata\Strata.dll"
包装器注册为Strata
组件,并如下创建其类型库:COM
。现在,当我打开regasm /codebase /tlb "C:\Strata\Strata.dll"
并进入Excel
下时,我可以看到Development > Visual Basic > Tools > References...
的{{1}}文件(位于“ C:\ Strata \ Strata.tlb ”),然后可以将其添加到当前项目中。但是,一旦我在窗口中键入内容或打开TLB
,Strata
就会崩溃,而没有提供有关正在发生的事情的任何有意义的信息。
我对这个问题一无所知。
我的注册过程是否正确?我也必须注册Objects Browser
库并创建其类型库吗?我应该将它们与Excel
包装器类型库一起包含在IKVM.NET
项目中吗?问题可能是由于我使用的是Excel VBA
的x64版本,并且包装器已经在Strata
下编译了吗?我是否需要通过在每个公共类上添加Excel
属性来编辑包装器?可能是由于包装器包含奇怪的方法名称(例如“ \ _Build01_ \ p”)导致的问题?
答案 0 :(得分:0)
您可以直接使用Java来构建Excel加载项,而不必使用IKVM.NET。
要使用Java构建Excel加载项而不需要使用.NET,请参见https://exceljava.com。
您甚至可能对Strata-Excel项目感兴趣,该项目将Strata库包装在Excel加载项中:https://github.com/exceljava/strata-excel
我认为您应该发现这比将Java库转换为.NET更方便。