JNI를 이용한 DLL LINK시키기 위해 DLL생성시 ERROR에 대하여


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]

글쓴이 :황성한 2000년 5월 16일 12:14:01

이런 유용한 사이트가 있다는 것에 항상 감사드립니다.
다름이 아니라 아래와 같이 JNI를 이용하여 DLL을 LINK시키는 방법을 아래와 같이 해보았습니다만 어디가 잘못인지 ERROR가 발생하는군요.
고수님들의 한수 지적을 부탁드립니다.


/*****************************************************/* JUtil.java */
/*****************************************************/
package sini;


import java.awt.*;
import java.util.*;
import java.io.*;


public final class JUtil
{


static
{
System.loadLibrary("JUtil");
}


private JUtil() {}
public static native int getHwnd(String title);
public static native void setWindowAlwaysOnTop(int hwnd, boolean flag);
}


javac Util.java
javah -jni sini.JUtil


/*****************************************************/
/* sini_JUtil.h */
/*****************************************************/
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class sini_JUtil */


#ifndef _Included_sini_JUtil
#define _Included_sini_JUtil
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: sini_JUtil
* Method: getHwnd
* Signature: (Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_sini_JUtil_getHwnd
(JNIEnv *, jclass, jstring);


/*
* Class: sini_JUtil
* Method: setWindowAlwaysOnTop
* Signature: (IZ)V
*/
JNIEXPORT void JNICALL Java_sini_JUtil_setWindowAlwaysOnTop
(JNIEnv *, jclass, jint, jboolean);


#ifdef __cplusplus
}
#endif
#endif


/****************************************************/
/* JUtil.c */
/****************************************************/
#include "sini_JUtil.h"
#define STRICT
#include <windows.h>
#include <conio.h>


JNIEXPORT jint JNICALL Java_sini_JUtil_getHwnd(JNIEnv *env, jclass obj, jstring title)
{
HWND hwnd = NULL;
const char *str = NULL;


str = (*env)->GetStringUTFChars(env, title, 0);
hwnd = FindWindow(NULL,str);
(*env)->ReleaseStringUTFChars(env, title, str);


return (jint) hwnd;
}


JNIEXPORT void JNICALL Java_sini_JUtil_setWindowAlwaysOnTop(JNIEnv *env, jclass obj, jint hwnd, jboolean flag)
{
if (flag)
SetWindowPos((HWND) hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
else
SetWindowPos((HWND) hwnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);


return;
}


cl JUtil.c -I"C:\java\include" -I"C:\java\include\win32" -I"C:\Program Files\Microsoft Visual Studio\VC98\include" -FeJutil.dll -MD -LD "C:\java\lib\javai.lib" "c:\program files\microsoft visual studio\vc98\lib\uuid.lib" "c:\program files\microsoft visual studio\vc98\lib\msvcrt.lib" "c:\program files\microsoft visual studio\vc98\lib\oldnames.lib" "c:\program files\microsoft visual studio\vc98\lib\kernel32.lib"


/****************************************************/
/* error message */
/****************************************************/
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.


/out:Jutil.dll
/dll
/implib:Jutil.lib
JUtil.obj
C:\java\lib\javai.lib
"c:\program files\microsoft visual studio\vc98\lib\uuid.lib"
"c:\program files\microsoft visual studio\vc98\lib\msvcrt.lib"
"c:\program files\microsoft visual studio\vc98\lib\oldnames.lib"
"c:\program files\microsoft visual studio\vc98\lib\kernel32.lib"
Creating library Jutil.lib and object Jutil.exp
JUtil.obj : error LNK2001: unresolved external symbol __imp__FindWindowA@8
JUtil.obj : error LNK2001: unresolved external symbol __imp__SetWindowPos@28
Jutil.dll : fatal error LNK1120: 2 unresolved externals


어디가 잘못되었는지 가르쳐주세요...


다음 글들:



이어서 글올리기(답하기)

이름:
E-Mail:
제목:
내용:
HTML 태그 포함 여부: HTML 문서일 경우 체크
관련 URL(선택):
URL 제목(선택):
관련 이미지 URL:


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]