JNI 对象参数传递问题

iefoahz3802 2008-03-16 05:45:16
我有个问题 请问下各位
我现在有个vb的 .dll文件 ,里面函数为
closecomm(comm_value& )
参数为 comm_value 的结构为

Public Type Comm_value
com_port As String * 3 //传入参数
dis_value As String * 40 //传出参数
data_len As String * 2 //传出参数
End Type

现在我使用jni的方法 重新用c++写个dll让java 调用

代码如下
main.h

class comm_value{
public:
char com_port[10];
char dis_value[40];
char data_len[2];

};

typedef int __stdcall (*SendCard_c_mcom_set)(comm_value& value);
typedef int __stdcall (*SendCard_closecomm)(comm_value& value);


main.cpp

JNIEXPORT jint JNICALL Java_SendCardJava_c_1mcom_1set
(JNIEnv * env, jobject, jobject comm)
{
jclass commValueCls = env->FindClass("Comm_Value");
jfieldID fid_CommValue_comport = env->GetFieldID(commValueCls,"com_port","Ljava/lang/String;");
jobject proCommport = env->GetObjectField(comm,fid_CommValue_comport);
jstring ppCommPort = (jstring)env->GetObjectField(proCommport,fid_CommValue_comport);

HINSTANCE DLLHandle;
SendCard_c_mcom_set sc_c_mcom_set;
int open_result = 0;

DLLHandle = LoadLibrary("D:\\DGD4V3.0\\sendcard.dll"); //

if (DLLHandle) //call crmp timeout hook
{
try
{
sc_c_mcom_set = (SendCard_c_mcom_set)GetProcAddress(DLLHandle,"c_mcom_set");
if (sc_c_mcom_set)
{
-----------------------------------------
问题: 下面的我调用vb 的dll 中的函数 c_mcom_set (Comm_value & parameter ) parameter 参数应该如何转换成Comm_value 类
并使引用中的传出的2个参数怎样传出 希望大家能帮帮忙 谢谢~
open_result = sc_c_mcom_set(commValueCls);

}
}catch(...)
{
}
}
}
...全文
318 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-16 05:45
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下