컴퓨터 튜토리얼 컴퓨터 지식 JAVA가 호출하는 DLL을 작성하기 위한 VC 구현 방법

JAVA가 호출하는 DLL을 작성하기 위한 VC 구현 방법

Jan 22, 2024 pm 04:57 PM

JAVA가 호출하는 DLL을 작성하기 위한 VC 구현 방법

VC를 사용하여 JAVA 호출용 DLL을 작성하는 방법

}(2) java 파일을 컴파일한 후 헤더 파일을 컴파일 및 생성(vc용) javac GB2PY.java //클래스 컴파일 및 생성 (3) 현재 폴더에 com/bw/gb2py 폴더를 생성하고 add GB2PY.class 폴더에 넣고 현재 폴더로 돌아가서 javah 명령을 호출하여 헤더 파일을 생성합니다. javah com.bw.gb2py.GB2PY //헤더 파일을 생성합니다. 파일 이름은 com_bw_gb2py_GB2PY.h입니다. 헤더 파일의 내용은 변경할 수 없습니다. 그렇지 않으면 생성된 dll을 사용할 수 없습니다. (4) 새 Win32 dll을 생성합니다. VC에서 GB2PY라는 프로젝트를 만들고 com_bw_gb2py_GB2PY.h를 프로젝트 디렉터리에 복사하여 프로젝트에 추가합니다. 그런 다음 %JAVA_HOME%/include/jni.h 및 %JAVA_HOME%/include/win32/jni_md.h를 프로젝트 디렉터리에 복사하고 프로젝트에 추가합니다. (5) com_bw_gb2py_GB2PY.h: Java_com_bw_gb2py_GB2PY_GetPY에 선언된 메서드를 구현합니다. c에서 Java 문자열과 문자의 변환에 주의하세요. Java의 문자열은 유니코드(더블바이트)로 인코딩되는 반면 char은 싱글바이트입니다. int (*GetPY)(char* szGBString,PY &oPY);JNIEXPORT jstring JNICALL Java_com_bw_gb2py_GB2PY_GetPY

(JNIEnv * env, jclass, jstring name){static HMODULE hModle = LoadLibrary("PYconvert.dll") //타사 dll

GetPY = (LPFUN)GetProcAddress(hModle,"GBToPY");int len;char charName[128];

char charPY[512];

len = env->GetStringLength(name) * 2 + 1; //2바이트 길이를 1바이트 길이로 변환하고 종결자를 추가하려면 1을 추가하세요

memset(charName, 0, len);

const wchar_t * w_buffer = env->GetStringChars(이름, 0);

int wlen = wcslen(w_buffer);

len = WideCharToMultiByte(CP_ACP, 0, w_buffer, wcslen(w_buffer) + 1, charName, len, NULL, NULL);

env->ReleaseStringChars(name, w_buffer); //위 코드는 java 문자열 이름의 내용을 char 배열 charName에 복사합니다... //일부 함수 코드를 생략하고 타사 dll을 호출하여 한자를 병음으로 변환합니다. charPY 배열에 저장된 함수 int slen = strlen(charPY);

jchar * 버퍼 = 새로운 jchar[slen];

len = MultiByteToWideChar(CP_ACP, 0, charPY, strlen(charPY), buffer, slen);

if (len > 0 & len

buffer[len] = 0; //위 코드는 char 유형 문자열을 jchar 유형 문자열로 변환합니다. jstring js = env->NewString(buffer, len);

delete [] buffer; return js;} (6) Java에서 호출할 수 있는 dll 파일을 컴파일하고 생성합니다(두 번째 단계에서 생성된 클래스를 사용해야 합니다)! :)

VC가 작성한 EXE 파일에 대한 DLL 파일을 작성하고 이 EXE가 DLL을 호출하도록 하는 방법

dll을 작성하는 방법을 말씀하시나요? , 아니면 작성한 DLL을 어떻게 호출하나요?

dll:vc++6.0을 작성하는 방법은 무엇입니까? 새 프로젝트를 만들 때 일반적으로 다음 중 하나를 선택합니다.

MFC AppWizard[dll]은 MFC 프레임워크의 동적 링크 라이브러리를 사용할 수 있습니다

Win32 동적 링크 라이브러리 window32비트 표준 동적 라이브러리

그런 다음 필요한 프레임워크를 선택하고 완료하면 기본 DLL이 준비됩니다.

vs2003 이상이면(vs2010은 사용하지 않았기 때문에 언급하지 않겠습니다), 새로 만드세요

엔지니어링에는 일반적으로 두 가지 유형이 사용됩니다.

MFC->MFC Dll

Win32->모든 항목->팝업 대화 상자에서 Dll 옵션을 선택하세요

다른 옵션은 필요에 따라 다릅니다. 그러면 완료되었으며 기본 DLL이 준비되었습니다.

작성한 dll 호출: 호출해야 하는 곳에 LoadLibrary("xxx.dll")를 사용하세요.

xxx.dll은 당신이 작성한 dll이고, xxx.dll에 썼다면

인터페이스의 경우 다음 메서드를 사용하여 dll에서 메서드를 호출할 수 있습니다.

1. exe 프로젝트에 dll의 인터페이스 헤더 파일을 포함합니다. 예를 들어 인터페이스 함수는 void FunName(int a);

2.typedef void(*Func)(int) //인터페이스 정의

3. 필요한 경우 사용:

...........................

HMOUDLE hMyDll = LoadLibrary("xxx.dll");

if (hMyDll != NULL)

{

Func *pDllFun=(Func *)::GetProcAddress(hMyDll,"FunName");//FunName은 Dll의 인터페이스 함수입니다

if (pDllFun != NULL)

{

pDllFun(1); //Dll에서 함수 호출

}

}

4. 더 이상 필요하지 않은 DLL을 제거합니다. FreeLibrary(hMyDll);

/////////////////////////////////////////////// /// /////

exe가 위치한 디렉터리에 Dll이 생성되었나요?

위 내용은 JAVA가 호출하는 DLL을 작성하기 위한 VC 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 설정에서 Drive Health 경고를 수정하는 방법을 알아보십시오. Windows 설정에서 Drive Health 경고를 수정하는 방법을 알아보십시오. Mar 19, 2025 am 11:10 AM

Windows 설정에서 Drive Health 경고는 무엇을 의미하며 디스크 경고를받을 때 어떻게해야합니까? 이 PHP.CN 튜토리얼을 읽고이 상황에 대처할 수있는 단계별 지침을 얻으십시오.

레지스트리를 어떻게 편집합니까? (경고 :주의해서 사용하십시오!) 레지스트리를 어떻게 편집합니까? (경고 :주의해서 사용하십시오!) Mar 21, 2025 pm 07:46 PM

기사는 Windows 레지스트리 편집, 예방 조치, 백업 방법 및 잘못된 편집의 잠재적 문제에 대해 설명합니다. 주요 이슈 : 부적절한 변화로 인한 시스템 불안정성 및 데이터 손실의 위험.

Windows에서 서비스를 어떻게 관리합니까? Windows에서 서비스를 어떻게 관리합니까? Mar 21, 2025 pm 07:52 PM

기사는 시작, 중지, 서비스 재시작 및 안정성 모범 사례를 포함하여 시스템 건강을위한 Windows 서비스 관리에 대해 논의합니다.

스팀 클라우드 오류를 수정하는 방법? 이 방법을 시도하십시오 스팀 클라우드 오류를 수정하는 방법? 이 방법을 시도하십시오 Apr 04, 2025 am 01:51 AM

증기 구름 오류는 여러 가지 이유로 인해 발생할 수 있습니다. 게임을 원활하게 플레이하려면 게임을 시작하기 전에이 오류를 제거하기 위해 몇 가지 조치를 취해야합니다. Php.cn Software는이 게시물에서 가장 유용한 정보뿐만 아니라 몇 가지 최선의 방법을 소개합니다.

Windows 메타 데이터 및 인터넷 서비스 문제 : 수정 방법은 무엇입니까? Windows 메타 데이터 및 인터넷 서비스 문제 : 수정 방법은 무엇입니까? Apr 02, 2025 pm 03:57 PM

"WMI (Windows Metadata and Internet Services)와의 연결을 설정할 수 없음"을 볼 수 있습니다. 이벤트 뷰어의 오류. Php.cn 의이 게시물은 Windows 메타 데이터 및 인터넷 서비스 문제를 제거하는 방법을 소개합니다.

파일 유형의 기본 앱을 어떻게 변경합니까? 파일 유형의 기본 앱을 어떻게 변경합니까? Mar 21, 2025 pm 07:48 PM

기사에서는 회복 및 대량 변경을 포함하여 Windows의 파일 유형에 대한 기본 앱 변경에 대해 설명합니다. 주요 이슈 : 내장 벌크 변경 옵션 없음.

KB5035942 업데이트 문제 - 충돌 시스템을 해결하는 방법 KB5035942 업데이트 문제 - 충돌 시스템을 해결하는 방법 Apr 02, 2025 pm 04:16 PM

KB5035942 업데이트 문제 - 충돌 시스템은 일반적으로 사용자에게 발생합니다. 가려진 사람들은 충돌 시스템, 설치 또는 건전한 문제와 같은 문제에서 벗어날 수있는 방법을 찾기를 희망합니다. 이러한 상황을 목표로,이 게시물은 Php.cn Wil이 게시했습니다

그룹 정책 편집기 (gpedit.msc)를 어떻게 사용합니까? 그룹 정책 편집기 (gpedit.msc)를 어떻게 사용합니까? Mar 21, 2025 pm 07:48 PM

이 기사는 시스템 설정을 관리하기 위해 Windows에서 그룹 정책 편집기 (GPEDIT.MSC)를 사용하는 방법을 설명하고 일반적인 구성 및 문제 해결 방법을 강조합니다. gpedit.msc는 Windows 홈 에디션에서 사용할 수 없다고 제안합니다.

See all articles