我使用IKVM.NET将Java库(信号,岩层)转换为.NET库。下面是我执行的步骤:
lib文件夹中的所有lib文件解压缩到C:\Strata\,包括以下辅助库:
sn -k "C:\Strata\Strata.snk"为要创建的库生成一个密钥文件。IKVM.NET的二进制字节码编译器,我使用以下命令将Strata的JAR文件转换为.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包装器注册为COM组件,并按照以下方式创建其类型库:regasm /codebase /tlb "C:\Strata\Strata.dll"。现在,当我打开Excel并在Development > Visual Basic > Tools > References...下运行时,我可以看到Strata的TLB文件(位于"C:\Strata\Strata.tlb"),并且可以将它添加到当前的项目中。但是,一旦我键入窗口或打开Objects Browser,Excel就会崩溃,而不会提供任何有意义的信息。
我对这个问题一无所知。
我的注册过程正确吗?我是否也必须注册IKVM.NET库并创建它们的类型库?我应该将它们与Excel VBA包装器类型库一起包含到Strata项目中吗?这个问题是否是因为我使用的是x64版本的Excel,而包装器是在AnyCPU下编译的呢?我需要通过在每个公共类上添加一个ComVisible属性来编辑包装器吗?这个问题可能是因为包装器包含像“\_Build01_\p”这样的奇怪的方法名称吗?
发布于 2019-06-10 13:12:12
与其使用IKVM.NET,不如直接使用Java构建一个Excel外接程序。
若要在Java中构建Excel外接程序而不必使用.NET,请参见https://exceljava.com。
甚至还有一个您可能感兴趣的Strata项目,它将Strata库封装在Excel外接程序中:https://github.com/exceljava/strata-excel中。
我认为您应该发现这比将Java库转换为.NET更方便。
https://stackoverflow.com/questions/54419884
复制相似问题