java.lang.UnsatisfiedLinkError: ctest.test.decrypt([BLjava/lang/String;)([B
错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: ctest.test.decrypt([BLjava/lang/String;)[B
at ctest.test.decrypt(Native Method)
at ctest.test.main(test.java:34)
我在做jni的demo的时候出现以上错误
java代码:
package ctest;
import java.io.File;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2013</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class test {
public test() {
}
static {
// System.loadLibrary("encrypt");
System.load("D:"+File.separator+"java开发"+File.separator+"wordspace"+File.separator+"ccWorkTools"+File.separator+"classes"+File.separator+"test.dll");
}
public static void main(String args[]) {
decrypt(new byte[10],"string");
}
public static native byte[] decrypt(byte[] encryptData,String password);
}
c++代码
#include <windows.h>
#include "test.h"
#include "jni.h"
#include <string>
JNIEXPORT jbyteArray JNICALL Java_ctest_test_decrypt
(JNIEnv *env, jclass s, jbyteArray byteArr, jstring str){
byte pData[] = {0x01, 0x01, 0x02, 0xe4, 0x71, 0x2b, 0x5f, 0x30};
jbyte *by = (jbyte*)pData;
int nOutSize = sizeof(pData);
jbyteArray jarray = env->NewByteArray(nOutSize);
env->SetByteArrayRegion(jarray, 0, nOutSize, by);
const char *nativeString = env->GetStringUTFChars(str, 0);
printf("%s", nativeString);
return jarray;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
break;
case DLL_PROCESS_DETACH:
// detach from process
break;
case DLL_THREAD_ATTACH:
// attach to thread
break;
case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}
test.h代码
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class ctest_test */
#ifndef _Included_ctest_test
#define _Included_ctest_test
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: ctest_test
* Method: decrypt
* Signature: ([BLjava/lang/String;)[B
*/
JNIEXPORT jbyteArray JNICALL Java_ctest_test_decrypt
(JNIEnv *, jclass, jbyteArray, jstring);
#ifdef __cplusplus
}
#endif
#endif
恳求前辈们指点一下,不知道是在哪里出错了 网上搜索了很多 还是没能解决 。 估计跟java方法签名有关,因为在网上查说是这样子,但是我核对了,找不出原因
我用的ide是code block 编译器是gnu gcc
在线等