是这样的,我要用我们的java程序调用一个C写的dll。我也看过jni的资料,理论上了解了,但实操了下问题还真多。
我的java类是这样的:
package com.test; public class TestNative {
public static native long OltpTransData(long msgType,long packageType,long packageLength,String str,String com);
} 然后我按照jni上说得调用javah程序生成了com_test_TestNative.h头文件,然后自己编写对应的com_test_TestNative.c源文件,其内容如下:
----------------------------------------------------------
#include "com_test_TestNative.h"
#include<stdio.h> JNIEXPORT jlong JNICALL Java_com_inca_medicineInsurance_dalian_jiekou_DalianMedicineNative_OltpTransData
(JNIEnv *, jclass, jlong, jlong, jlong, jstring, jstring){
printf("test success!!!");
}
------------------------------------------------------------
(方法里只是打印了一条语句,我目前只是项测试下我的java程序调用C的dll是否成功)
然后我使用如下语句进行编译:
cl -I%java_home%\include -I%java_home%\include\win32 -LD com_test_TestNative.c -Fetest.dll 执行上面编译语句的时候,报错如下:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved. com_test_TestNative.c
com_test_TestNative.c(6) : error C2055
: expected formal parameter list, not a type list 这里出错的地方应该是指上面的C源文件中的那个方法的方法列表有问题,可是我查资料均未对此处应该如何修改有更多的说明。那我兄弟知道这里应该如何修改么?不胜感谢!
我的java类是这样的:
package com.test; public class TestNative {
public static native long OltpTransData(long msgType,long packageType,long packageLength,String str,String com);
} 然后我按照jni上说得调用javah程序生成了com_test_TestNative.h头文件,然后自己编写对应的com_test_TestNative.c源文件,其内容如下:
----------------------------------------------------------
#include "com_test_TestNative.h"
#include<stdio.h> JNIEXPORT jlong JNICALL Java_com_inca_medicineInsurance_dalian_jiekou_DalianMedicineNative_OltpTransData
(JNIEnv *, jclass, jlong, jlong, jlong, jstring, jstring){
printf("test success!!!");
}
------------------------------------------------------------
(方法里只是打印了一条语句,我目前只是项测试下我的java程序调用C的dll是否成功)
然后我使用如下语句进行编译:
cl -I%java_home%\include -I%java_home%\include\win32 -LD com_test_TestNative.c -Fetest.dll 执行上面编译语句的时候,报错如下:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved. com_test_TestNative.c
com_test_TestNative.c(6) : error C2055
: expected formal parameter list, not a type list 这里出错的地方应该是指上面的C源文件中的那个方法的方法列表有问题,可是我查资料均未对此处应该如何修改有更多的说明。那我兄弟知道这里应该如何修改么?不胜感谢!
JNIEXPORT jlong JNICALL Java_com_inca_medicineInsurance_dalian_jiekou_DalianMedicineNative_OltpTransData
(JNIEnv *env, jclass clazz, jlong msgType, jlong packageType, jlong packageLength, jstring jstrStr, jstring jstrCom){
printf("test success!!!\n");
return 0;
}
也感谢三楼的兄弟提醒了我:)
给分