急!!!求助 你写的dll里面使用了类,而标准dll是不能包含类的。你改为C风格的调用就没问题了。也就是说,你的dll用C来写,别用C++ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是只需要改动Sample1.cpp吗 #include "Sample1.h" #include "lz77.h" JNIEXPORT jbyteArray JNICALL Java_Sample1_stringMethod (JNIEnv *env, jobject obj, jbyteArray array) { jbyteArray jb; jbyte *dest = env->GetByteArrayElements(array,0); BYTE src[65536 + 16]; CCompressLZ77 cc; cc.doDecompress(src,(BYTE*)dest); printf("%s\n",src); env->ReleaseByteArrayElements(array, dest, 0); int iSize = strlen((char*)src); printf("解压后的长度:"); printf("%d\n", iSize); jb = env->NewByteArray(iSize); env->SetByteArrayRegion(array,0,iSize,(jbyte *)src); return jb; } JNIEXPORT jbyteArray JNICALL Java_Sample1_byteArrayMethod (JNIEnv *env, jobject obj, jbyteArray array) { jbyteArray jb; int len = env->GetArrayLength(array); jbyte *src = env->GetByteArrayElements(array,0); printf("压缩前大小:"); printf("%d\n",len); BYTE desbuf[65536 + 16]; CCompressLZ77 cc; //cc.Compress((BYTE *)src, len, desbuf); int iSize = cc.doCompress((BYTE *)src, len, desbuf); printf("压缩后大小:"); printf("%d\n",iSize); //int iSize = strlen((char*)desbuf); jb = env->NewByteArray(iSize); if(jb == NULL) { printf("asddf"); return NULL; } env->SetByteArrayRegion(jb,0,iSize,(jbyte *)desbuf); env->ReleaseByteArrayElements(array, src, 0); return jb; }JNIEXPORT jstring JNICALL Java_Sample1_testString (JNIEnv *env, jobject obj, jstring string) { const char *str = env->GetStringUTFChars(string, 0); int iLen = strlen(str); BYTE desbuf[65536 + 16]; CCompressLZ77 cc; cc.Compress((BYTE*)str,iLen, desbuf); printf("%s\n",str); env->ReleaseStringUTFChars(string, str); return env->NewStringUTF((char*)desbuf); } //void main(){} java的数据库问题 我要疯了,CVS老是登陆不上 java中如何取得事件源的坐标! 关于链接传值的问题!!up有分!! 新手提问:关于jar包部署时的问题 终于写完了一个简单的计算器,但是有一个除数为零的异常问题,请各位指教 求教算法2维数组转化1维 挺不错的JAVA小题一道! 谁搞的定??? java运行程序没有进行运算 大家进来讨论一道关于overload的题! 简单问题,送分
#include "lz77.h"
JNIEXPORT jbyteArray JNICALL Java_Sample1_stringMethod
(JNIEnv *env, jobject obj, jbyteArray array) { jbyteArray jb;
jbyte *dest = env->GetByteArrayElements(array,0);
BYTE src[65536 + 16];
CCompressLZ77 cc;
cc.doDecompress(src,(BYTE*)dest);
printf("%s\n",src);
env->ReleaseByteArrayElements(array, dest, 0);
int iSize = strlen((char*)src);
printf("解压后的长度:");
printf("%d\n", iSize);
jb = env->NewByteArray(iSize);
env->SetByteArrayRegion(array,0,iSize,(jbyte *)src);
return jb;
} JNIEXPORT jbyteArray JNICALL Java_Sample1_byteArrayMethod
(JNIEnv *env, jobject obj, jbyteArray array) {
jbyteArray jb;
int len = env->GetArrayLength(array);
jbyte *src = env->GetByteArrayElements(array,0); printf("压缩前大小:");
printf("%d\n",len); BYTE desbuf[65536 + 16];
CCompressLZ77 cc;
//cc.Compress((BYTE *)src, len, desbuf);
int iSize = cc.doCompress((BYTE *)src, len, desbuf);
printf("压缩后大小:");
printf("%d\n",iSize); //int iSize = strlen((char*)desbuf);
jb = env->NewByteArray(iSize);
if(jb == NULL)
{
printf("asddf");
return NULL;
}
env->SetByteArrayRegion(jb,0,iSize,(jbyte *)desbuf);
env->ReleaseByteArrayElements(array, src, 0);
return jb;
}JNIEXPORT jstring JNICALL Java_Sample1_testString
(JNIEnv *env, jobject obj, jstring string) { const char *str = env->GetStringUTFChars(string, 0);
int iLen = strlen(str);
BYTE desbuf[65536 + 16];
CCompressLZ77 cc;
cc.Compress((BYTE*)str,iLen, desbuf);
printf("%s\n",str);
env->ReleaseStringUTFChars(string, str);
return env->NewStringUTF((char*)desbuf);
}
//void main(){}