比如我有了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~
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~
解决方案 »
- 求教:类集、集合类以及容器的区别是什么?
- 请教一个java父类和子类关系的问题
- Exception in thread"main"java.lang.ClassCastException: thepvc cannot be cast to
- 怎麼解釋啊?
- java网络的问题
- 线程的暂停或停止的方法
- select count(DISTINCT tr_code, tr_date) from serial_no为什么出错??
- 有那位用java写过读取com口的程序(就是银行取钱的时候用密码键盘输入的那种)谢谢!
- CMP里面怎样处理自动增长的字段?怎样取回某字段的最大值?
- ~~进门就送分!~~ 如何执行包含多语种的SQL语句呢?
- 求助!!!为什么我连不上数据库???
- 如何实现一个方法返回两个不同类型的值?
java -Djava.library.path=D:\ yourclass