需求:游戏客户端服务端要共用一套属性系统,但是服务端是用Java编写,客户端是C#编写。属性系统是在客户端由C#生成的dll类库,服务端要想使用,就需要Java调用该C#生成的dll类库。
但是:java 并不能直接调用 C# 的 dll,步骤如下:
1. 下载jni4net最新版(我的为jni4net-0.8.8.0-bin.zip)
2. 配置环境变量:
a. 配置JAVA_HOME,并将“%JAVA_HOME%\bin”加入Path
b. 将“C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe”加入Path,ProxyGen.exe执行时会用到
3. 运行generateProxies.cmd
a. 首先用NotePad++打开,在该文件最后一行加上"pause",以便于调试,如下:
b. 双击执行该文件,你会发现:
解决A错误:将"你的本地路径\jni4net-0.8.8.0-bin\lib\jni4net.n-0.8.8.0.dll"文件,右键单击-属性-解除锁定。再次双击执行generateProxies.cmd,如果还报如上错误,则将相应路径下的dll文件,做同样操作即可。
4. 运行run.cmd
最后生成了许多文件,其中以下6个文件是Java工程编译所必须的,仅仅1个文件MyCSharpDemoCalc.dll 是Unity工程编译所必须的:
参考链接如下:
https://github.com/jni4net/jni4net
此外还有一种方式:
http://dev.mainsoft.com/Default.aspx?tabid=130 该网站上的 Grasshopper 理论上可以起到把 c# 转为 java 的效果。