ninia / jep

Embed Python in Java
Other
1.3k stars 147 forks source link

ld.exe: Cannot export PyInit_jep: symbol not defined(pypy and mingw) #436

Closed RussiaVk closed 1 year ago

RussiaVk commented 1 year ago

Describe the problem A clear and concise description of what the problem is.

Search for existing solutions The Jep build is automatically tested and confirmed to be working in Linux, OS X, and Windows using Travis and AppVeyor. We cannot possibly test every environment so we rely on the community to document any issues and solutions in other environments. Please search for a similar problem and solution on both the mailing list and the existing closed github issues before opening a new issue.

Environment (please complete the following information):

Logs

writing build\temp.win-amd64-3.9\Release\src\main\c\jep\jep.pypy39-pp73-win_amd64.def
gcc -shared -s build\temp.win-amd64-3.9\Release\src\main\c\jep\convert_j2p.o build\temp.win-amd64-3.9\Release\src\main\c\jep\convert_p2j.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\arraylist.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\autocloseable.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\biginteger.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\boolean.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\buffer.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\byte.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\bytebuffer.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\byteorder.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\charbuffer.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\character.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\class.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\classloader.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\collection.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\collections.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\comparable.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\constructor.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\double.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\doublebuffer.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\entry.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\field.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\float.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\floatbuffer.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\hashmap.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\intbuffer.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\integer.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\iterable.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\iterator.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\jpycallable.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\jpyobject.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\jepexception.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\list.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\long.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\longbuffer.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\map.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\member.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\method.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\modifier.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\number.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\object.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\proxy.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\short.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\shortbuffer.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\string.o build\temp.win-amd64-3.9\Release\src\main\c\jep\java_access\throwable.o build\temp.win-amd64-3.9\Release\src\main\c\jep\jep.o build\temp.win-amd64-3.9\Release\src\main\c\jep\jep_exceptions.o build\temp.win-amd64-3.9\Release\src\main\c\jep\jep_numpy.o build\temp.win-amd64-3.9\Release\src\main\c\jep\jep_util.o build\temp.win-amd64-3.9\Release\src\main\c\jep\maininterpreter.o build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o build\temp.win-amd64-3.9\Release\src\main\c\jep\python\invocationhandler.o build\temp.win-amd64-3.9\Release\src\main\c\jep\python\jep_object.o build\temp.win-amd64-3.9\Release\src\main\c\jep\python\jpycallable.o build\temp.win-amd64-3.9\Release\src\main\c\jep\python\pypointer.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjarray.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjautocloseable.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjbuffer.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjclass.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjcollection.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjconstructor.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjfield.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjiterable.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjiterator.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjlist.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjmap.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjmethod.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjmonitor.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjmultimethod.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjnumber.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjobject.o build\temp.win-amd64-3.9\Release\src\main\c\objects\pyjtype.o build\temp.win-amd64-3.9\Release\src\main\c\jep\jep.pypy39-pp73-win_amd64.def -LC:\Program Files\JDK\jdk-17.0.1\lib\ -LC:\Program Files\pypy3.9-v7.3.9\libs -ljvm -lpython39 -lpython39 -o build\lib.win-amd64-3.9\jep\jep.pypy39-pp73-win_amd64.pyd
C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: Cannot export PyInit_jep: symbol not defined
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0xff): undefined reference to `Py_DecodeLocale'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x11b): undefined reference to `Py_SetPythonHome'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x13f): undefined reference to `Py_Finalize'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x259): undefined reference to `Py_NewInterpreter'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x7f7): undefined reference to `Py_EndInterpreter'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x9f1): undefined reference to `Py_Initialize'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0xe0b): undefined reference to `PySys_SetArgvEx'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0xed6): undefined reference to `PySys_SetArgvEx'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x1f39): undefined reference to `PyMarshal_ReadLongFromFile'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x1f40): undefined reference to `PyImport_GetMagicNumber'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x1f88): undefined reference to `PyMarshal_ReadLongFromFile'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x1f90): undefined reference to `PyMarshal_ReadLongFromFile'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x1f98): undefined reference to `PyMarshal_ReadLongFromFile'
build\temp.win-amd64-3.9\Release\src\main\c\jep\pyembed.o:pyembed.c:(.text+0x1fa0): undefined reference to `PyMarshal_ReadLastObjectFromFile'
collect2.exe: error: ld returned 1 exit status
error: command 'C:\\Program Files\\mingw64\\bin\\gcc.exe' failed with exit code 1

Additional context Hi,I'm trying build jep with pypy (compiler is mingw) .But it error: symbol not defined and undefined reference to,What did I missed?Or which compile option I missed and should be add?(sorry,my eng is bad )

bsteffensmeier commented 1 year ago

Jep embeds CPython in Java through JNI. PyPy is not CPython so Jep does not embed PyPy.

RussiaVk commented 1 year ago

Jep embeds CPython in Java through JNI. PyPy is not CPython so Jep does not embed PyPy.

ohh It's a bad news