救命啊~JNI问题~用了很多时间了,还是搞不好~
比如我有了JAVA文件.
public class TestNative{
private native void add(String str);
public static void main(String[] args) {
TestNative hh = new TestNative();
hh.add("QQ.exe");
}
static {
System.loadLibrary("DLL_0305");
}
}
其中add()的.C文件如下:
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <jni.h>
JNIEXPORT void JNICALL Java_TestNative_add(JNIEnv *env,jobject obj,jstring cs)
{
char* WillStopName;
WillStopName=(char*)env->GetStringUTFChars(cs,0);
HANDLE hProcessSnap =NULL;
BOOL bRet=FALSE;
PROCESSENTRY32 pe32={0};
// Take a snapshot of all processes in the system.
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
// Fill in the size of the structure before using it.
pe32.dwSize = sizeof(PROCESSENTRY32);
// Walk the snapshot of the processes, and for each process,
// display information.
if (Process32First(hProcessSnap, &pe32))
{
BOOL bGotModule = FALSE;
MODULEENTRY32 me32= {0};
do
{
HANDLE hProcess;
hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
strupr(pe32.szExeFile);
//char ProcessName[100];
//strcpy(ProcessName,WillStopName);
strupr(WillStopName);
if(strcmp(pe32.szExeFile,WillStopName)==0)
{
DWORD result=TerminateProcess( hProcess, 0 );
if(result!=0) {}
}
CloseHandle (hProcess);
}
while (Process32Next(hProcessSnap, &pe32));
}
else
bRet = FALSE;
// Do not forget to clean up the snapshot object.
CloseHandle (hProcessSnap);
}
把javah TestNative中生成的.c文件加到VC项目中了,Java_TestNative_add()能顺利编译,把DLL放在和CLASS文件同等目录下运行缺不能得到正确结果.错误如下:
Exception in thread "main" java.lang.UnsatisfiedLinkError: add
at TestNative.add(Native Method)
at TestNative.main(TestNative.java:7)
谁能指点指点????????THX~
问题点数:50、回复次数:3Top
1 楼sswater(光杆兵)回复于 2006-05-02 01:04:51 得分 20
dll 不是放在 "class 文件同目录",而是 "java.library.path" 指向的目录Top
2 楼dongdong715(美女追我八条街(抵制日货))回复于 2006-05-02 14:32:31 得分 0
那是放在哪里?为什么我的一个简单的例子放在和CLASS同等目录下面却可以 ?
Top
3 楼sswater(光杆兵)回复于 2006-05-03 03:54:06 得分 30
比如 dll 放在 d:\
那么,运行时格式为:
java -Djava.library.path=D:\ yourclass
Top




