GCJ를 사용하여 Python에서 호출 할 수있는 라이브러리를 생산할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/2203728

  •  18-09-2019
  •  | 
  •  

문제

GCJ로 Java 용 라이브러리를 컴파일하고 DLL을 받고 Python CTypes에서 전화 할 수 있습니까?

나는 현재 Toxilib에 관심이 있지만, 누군가가 장난감 예를 알고 있다면 좋을 것입니다!

도움이 되었습니까?

해결책

Java-Python Hooks를 원한다면 Jython을 사용하고 경계를 가로 질러 전화하는 것이 훨씬 나아질 것입니다.

그러나 예, Java에서 외부 라이브러리를 호출 할 수 있습니다. 그러나 당신은 그렇게하기 위해 GCJ가 필요하지 않습니다. 오히려, 당신은 Python 런타임 내에 JVM 인스턴스를 가져온 다음 그 방법을 호출 할 수 있습니다.

JNI 호출 사양

기본적으로 시작시 VM을 만들고 싶을 때마다 방법을 호출하려고합니다.

// Do this once per session, e.g. an __init__ 

JNI_CreateJavaVM(&jvm, &env, &vm_args); 

// When needed invoke Example.foo(int)
jclass cls =
env->FindClass("Example");  jmethodID
mid = env->GetStaticMethodID(cls,
"foo", "(I)V"); 
env->CallStaticVoidMethod(cls, mid,100);

CTYPES에서이를 호출하기 위해 간단한 C- 래퍼 코드를 작성할 수 있습니다. 그러나 Javavm은 다수의 공허* 포인터를 갖는 구조의 구조이므로 직접적으로 수행하지 않을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top