我现在用JAVA写一个程序调用现有VB编写test.dll.因为test.dll不符合JNI编写规范,所以在中间还必须编写一个VC++编写的jtest.dll.
一部分函数已经能够成功调用,举个例子说明:
typedef bool (_stdcall *WOCRInit)(int iOcrType,int iHZtype,int iCharacterSet, int res1 );
JNIEXPORT jboolean JNICALL Java_DLLBean_WOcrInit(JNIEnv *env, jclass obj, jint iOcrType, jint iHZtype, jint iCharacterSet, jint res1)
{ HINSTANCE hTest;
WOCRInit wocrInit;
bool bo;
hTest=LoadLibrary("OcrWencui.dll");
wocrInit =(WOCRInit)GetProcAddress(hTest,"WOcrInit");
bo = wocrInit(iOcrType,iHZtype,iCharacterSet,res1);//调用
return bo;
}
提问:
public native static boolean WOcrStart(int Bitmap,Rectangle Rect);//Rectangle为四边形类
这个函数中的Rectangle Rect参数如何传递?
如何实现:
typedef bool (_stdcall *WOcrStart)(……)中的参数列表
WOcrStart(……)中的参数列表test.dll关于这两个函数的接口定义为
VC: extern "C" BOOL _stdcall EXPORT WOcrStart (HBITMAP Bitmap, RECT* Rect);
请高手明释,谢谢
一部分函数已经能够成功调用,举个例子说明:
typedef bool (_stdcall *WOCRInit)(int iOcrType,int iHZtype,int iCharacterSet, int res1 );
JNIEXPORT jboolean JNICALL Java_DLLBean_WOcrInit(JNIEnv *env, jclass obj, jint iOcrType, jint iHZtype, jint iCharacterSet, jint res1)
{ HINSTANCE hTest;
WOCRInit wocrInit;
bool bo;
hTest=LoadLibrary("OcrWencui.dll");
wocrInit =(WOCRInit)GetProcAddress(hTest,"WOcrInit");
bo = wocrInit(iOcrType,iHZtype,iCharacterSet,res1);//调用
return bo;
}
提问:
public native static boolean WOcrStart(int Bitmap,Rectangle Rect);//Rectangle为四边形类
这个函数中的Rectangle Rect参数如何传递?
如何实现:
typedef bool (_stdcall *WOcrStart)(……)中的参数列表
WOcrStart(……)中的参数列表test.dll关于这两个函数的接口定义为
VC: extern "C" BOOL _stdcall EXPORT WOcrStart (HBITMAP Bitmap, RECT* Rect);
请高手明释,谢谢
解决方案 »
- 我连数据库的时候,报个空指针出来? 真的是找不到原因所在。求大虾们帮帮忙
- JTable中某列加入JCombobox,当移动到jcombobox后,用上下键选择jcombobox中的内容,但是却跳入jtable的下一行,求解决方法.如图
- 一个超简单的界面问题,小弟在线等,急
- JPCAP程序执行产生错误....文件已经存在...还有错误
- 如何取得新增记录的自动编号字段的值?百分请教
- javabean java类
- 如何得到数据表中某列的最大值?
- 新手:这个函数为什么不能关闭窗口
- 高分求解---struts怎样实现表单验证不通过重新导向输入页面,并给出出错信息?
- 当你遇到问题时,你会怎么办?(讨论,关于学习方法的问题)
- 正则表达式,实现模糊查询效果
- 我的jdk6.0的配置出了点问题,请各位老鸟帮帮忙!
publicRECT
{
int top;
int left;
int button;
int right;
}
怎么转成RECT*? RECT*应该是结构参数吧?
package com.xiruo;public class RECT {
int top;
int left;
int button;
int right;
} 类:
package com.xiruo;public class Test {
public native void doTest(com.xiruo.RECT rect);
}C++:
JNIEXPORT void JNICALL Java_com_xiruo_Test
(JNIEnv *env, jobject _obj)
{
jclass objectClass = (env)->FindClass("com/xiruo/RECT"); jfieldID fldTop = (env)->GetFieldID(objectClass, "top", "I"); jobject topObj = (env)->GetObjectField(obj, fldTop); jint jiTop = (jint)topObj; printf("top = %d\n", jiTop);
}
麻烦再回答我个类似但又不同的问题吧!
JAVA 定义一个类
public class TOCRResult {
public int Count;
public TResult Result[];//TResult为自己定义的另外一个类
public TOCRResult() {
}
}
C++里定义的结构参数为
struct TOCRResult {
int Count;
TResult Result[];
};
怎么把Java 中的TResult Result[]传到C++中的TResult Result[]呢?