من الممكن استخدام GCJ لإنتاج مكتبة Callable من بيثون؟

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

  •  18-09-2019
  •  | 
  •  

سؤال

هل من الممكن تجميع مكتبة مخصصة ل Java مع GCJ، واحصل على DLL والاتصال من Python CtyPes؟

أنا مهتم ب Toxilibs في الوقت الحالي، لكن إذا كان أي شخص يعرف مثالا لعبة سيكون رائعا!

هل كانت مفيدة؟

المحلول

إذا كنت تريد خطافات Java-Python، فستكون أفضل حالا في استخدام Jython ثم استدعاء الحدود بهذه الطريقة.

ومع ذلك، نعم، من الممكن استدعاء مكتبة خارجية من جافا؛ لكنك لا تحتاج إلى GCJ للقيام بذلك. بدلا من ذلك، يمكنك فقط طرح مثيل JVM داخل وقت تشغيل Python الخاص بك ثم استدعاء الأسلوب (الأسلوب) الخاص بك لذلك.

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);

يمكنك كتابة بعض Code C-Wrapper بسيطة لاستدعاء هذا لك من CTTYPES. ومع ذلك، فإن Javavm هي هيكل بنية ذات عدد من مؤشرات الفراغ *، لذلك قد لا تكون غير تافهة للقيام بذلك مباشرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top