2010-11-30 2 views
2

Java에서 활용하고 싶은 특정 라이브러리가 있습니다.파스칼 라이브러리 함수 집합에 Java JNI 래퍼를 작성하려면 어떻게합니까?

라이브러리 자체는 파스칼로 작성되고 DLL로 컴파일됩니다. 모든 관련 소스 코드 (무료 및 오픈 소스)에 대한 읽기 권한이 있지만 라이브러리의 원래 코드에 대한 변경 제안에 영향을 미칠 수는 없습니다. 나는 파스칼 지식이나 경험이 거의 없다. 라이브러리 자체는 메모리에 전달되고 구조를 되 찾는 것과 어느 정도 관련이 있습니다. (C 언어의 경우, 함수는 구조체 포인터를 가져 와서 반환합니다. 불행히도 파스칼에서 동일한 이름을 알지 못합니다.)

내가 만들고자하는 것은이 라이브러리에 대한 Java 래퍼입니다. 이러한 함수를 호출 할 수 있기를 바랍니다. Java Native Interface에 관한 많은 자습서를 읽었습니다. 어떤 의미를 갖는 것은 이러한 기능을 어떻게 인터페이스하는지입니다. 나에게 의미가없는 것은 내가 기억 속에있는이 구조들을 다루는 방법이다.

누군가가이 작업을 수행하는 방법을 알아 내거나 나를 위해 좋은 리소스를 가르쳐 주시면 정말 감사하겠습니다. 내가 지금까지 읽은 것은 대부분 내가 기억하는 구조를 다루면서 내가 필요한 것에 대해 가장 중요한 부분 인 것처럼 보이는 것을 제외하거나 글로 나타내었다.

감사합니다.

+0

설명이 구조체의 데이터를 읽고 다른 함수 호출로 다시 전달하려고합니다. – Ming

+0

어떤 파스칼 컴파일러가 DLL을 생성하는 데 사용됩니까? 나는 이전에 Delphi에서 C로 컴파일 된 DLL과 Delphi에서 C로 컴파일 된 DLL을 호출했습니다. 이것은 매우 간단합니다. 대부분의 경우 파스칼의 레코드는 C의 구조체와 거의 동일하므로 올바른 형식을 선택하면 각 필드에 대해 바이트 수가 일치하므로 확인해야합니다. 거기에 많은 품종이 있기 때문에 문자열이 훨씬 더 흥미로울 수 있습니다 ... –

+1

그래서 나는 DLL 함수를 호출하고 구조를 전달할 수 있는지 확인하기 위해 C에서 몇 가지 테스트 코드를 작성하는 것이 좋습니다. 일단 JNI 호출 작업을 시작하려면 C 서명이 있어야합니다. –

답변

1

내 경험에 비추어 볼 때, JNI (너무 복잡함)를 피할 것입니다. & 대신 JNA를 사용하십시오.

+0

동의 함. http://en.wikipedia.org/wiki/Java_Native_Access –

관련 문제