我想转换的Apache POI的.jar到.dll文件。 我用下面的脚本转换。 之后POI-3.8-20120326.dll:但是我得到很多的警告和错误选项无效-resource的。 下面是我使用的脚本。
ikvmc -target:library poi-ooxml-schemas-3.8-20120326.jar
ikvmc -target:library poi-3.8-20120326.jar
ikvmc -target:library -resource:poi-3.8-20120326.dll poi-scratchpad-3.8-20120326.jar
ikvmc -target:library -resource:poi-3.8-20120326.dll poi-ooxml-schemas-3.8-20120326.dll poi-scratchpad-3.8-20120326.dll poi-ooxml-3.8-20120326.jar
ikvmc -target:library -resource:poi-3.8-20120326.dll poi-ooxml-3.8-20120326.dll poi-excelant-3.8-20120326.jar
就是用这种IKVM.Net正确的方法。 如果没有什么是正确的脚本来做到这一点。
我刚刚完成一个项目,我已经成功转换和利用IKVM 0.46.0.1使用的Apache POI 3.9。 转换后的组DLL预支持2007年和2007年发布的Microsoft Office格式。
先决条件:
下载POI 3.9和所有的JAR文件复制到一个目录下载IKVM(我使用0.46.0.1版)以下命令(在Windows 7中的命令行中,所有的POI JAR文件是相同的目录中运行)的伎俩对我来说:
ikvmc -target:library xmlbeans-2.3.0.jar
ikvmc -target:library stax-api-1.0.1.jar
ikvmc poi-ooxml-schemas-3.9-20121203.jar -target:library -reference:xmlbeans-2.3.0.dll -reference:stax-api-1.0.1.dll
ikvmc -target:library log4j-1.2.13.jar
ikvmc -target:library commons-logging-1.1.jar
ikvmc -target:library commons-codec-1.5.jar
ikvmc poi-3.9-20121203.jar -target:library -reference:log4j-1.2.13.dll -reference:commons-logging-1.1.dll -reference:commons-codec-1.5.dll
ikvmc -target:library dom4j-1.6.1.jar
ikvmc poi-ooxml-3.9-20121203.jar -target:library -reference:poi-3.9-20121203.dll -reference:poi-ooxml-schemas-3.9-20121203.dll -reference:dom4j-1.6.1.dll -reference:xmlbeans-2.3.0.dll
希望能帮助到你。
该-resource
的备选方案ikvmc
编译器记录是这样的:
-resource:名称=路径包括路径作为Java资源命名的名称
所以这似乎表明-resource
用于包括资源文件到编译,而不是(像你这样做)以前编译的DLL。
这种怀疑是由该怎么这个例子证实了resource
选项中使用周围的蚂蚁包装的一个示例ikvmc
:
<resource name="/logs/logging.properties" path="${builddir}/logging.properties"/>
由于ikvmc
是一个Java字节码到.NET的中间语言的编译器,它知道如何读的jar文件。 因此,而不是试图包括(之前生成的)的DLL到编译周期,你应该只指向ikvmc
原来的jar文件。
要做到这一点最简单的方法是可能是将所有罐子一气呵成:
ikvmc -target:library poi-ooxml-schemas-3.8-20120326.jar poi-3.8-20120326.jar poi-scratchpad-3.8-20120326.jar ...
你需要替换引用选项-resource。
但最好是编译它在一个步骤{}语法。 请参阅有关详细信息,维基 。 这可以是这样的:
ikvmc { -target:library poi-ooxml-schemas-3.8-20120326.jar } { -target:library poi-3.8-20120326.jar } { -target:library poi-scratchpad-3.8-20120326.jar } ....
将所有的罐子一气呵成的坦率的回答解决了这个问题对我来说。 下面是我用POI 3.10完整的命令。 所有的罐子都需要在同一个目录下。 -out选项允许你指定输出DLL的名称,否则它从第一个罐子的名字。
ikvmc -target:library -out:poi-3.10.dll xmlbeans-2.3.0.jar stax-api-1.0.1.jar poi-ooxml-schemas-3.10-FINAL-20140208.jar log4j-1.2.13.jar commons-logging-1.1.jar commons-codec-1.5.jar poi-3.10-FINAL-20140208.jar dom4j-1.6.1.jar poi-ooxml-3.10-FINAL-20140208.jar