这几天打算做个游戏方向盘之类的,找到了vjoy,安装后会虚拟出1到16个游戏控制器,每个游戏控制器最多支持8轴128键,还有力反馈什么的,提供有skd可以编写client端控制这些游戏控制器的各个轴、按钮等,这样,可以把手机、键盘、鼠标之类的模拟成游戏手柄、方向盘、飞行控制器等。
目前sdk只支持c++和c#,不支持java,这里用jni做了java端的调用类,大概过程:
1. 新建类com.superzlc.vjoy.VJoy用于控制vjoy,看sdk里的示例和头文件,确定哪些方法需要放到vjoy,把方法改成java版的,写到VJoy,标记native。
2. 到class根目录用javah com.superzlc.vjoy.VJoy生成头文件com_superzlc_vjoy_VJoy.h,
3. 用的vs2010,新建win32应用程序工程,新建向导中会有些设置:应用程序为dll,附加选项勾选导出符号
4. 然后是复制和添加com_superzlc_vjoy_VJoy.h,还有jni的头文件,vjoy的头文件及lib文件
5. 新建或使用已有cpp文件,开始实现com_superzlc_vjoy_VJoy.h里的方法。
一些点:
javah遇上不能解析的字符了,因为java文件是utf-8的有汉字,简单点直接去掉汉字做的。
VJoy里的方法最开始可能列不全或有些参数错误,那同步修改VJoy、com_superzlc_vjoy_VJoy.h、及实现方法。
vjoy的lib文件分32位和64位,这里直接添加进来的,只用了64位,那编32位得换一下。
jni的c++类型,jboolean jint等,看定义,一些直接能与对应类型转换,对象则需要类似反射的方法,字符串的复杂些查资料。
最后编译出一个dll,把他与sdk里其他的dll一起放到windows文件夹里(不是必须windows),调用VJoy测试正常。
相关文件下载地址:http://download.csdn.net/detail/superzlc/9769506