naksyn / PythonMemoryModule

pure-python implementation of MemoryModule technique to load dll and unmanaged exe entirely from memory
Apache License 2.0
297 stars 46 forks source link

TypeError: expected CFunctionType instead of int #9

Open JiaPai12138 opened 1 month ago

JiaPai12138 commented 1 month ago

while trying to load onnxruntime_pybind11_state.pyd in memory, it gives me error:

File "test.py", line XXX, in build_import_table
    funcref.contents = GetProcAddress(hmod, cast(importordinal, LPCSTR))
    ^^^^^^^^^^^^^^^^
TypeError: expected CFunctionType instead of int
# I just copy & paste the content of __init__.py to test.py

Simple test code:

if __name__ == '__main__':
    import sys
    import importlib.util
    import importlib.metadata

    content = open('d:\\Python312\\Lib\\site-packages\\onnxruntime\\capi\\onnxruntime_pybind11_state.pyd', 'rb').read()
    dll = MemoryModule(data=content, debug=True)
    print('test for fun !')
    sleep(10)
    exit()

install onnxruntime module: (python 3.12.7)

pip install onnxruntime-directml==1.19.2

By the way, if test with onnxruntime==1.19.2, works fine For 'onnxruntime-gpu==1.19.2, it will just exit without printing

FYI: python 3.11 version of onnxruntime-directml will have the same error

JiaPai12138 commented 1 month ago

And 'entry_imports[j].name' returns None (for onnxruntime-directml)

naksyn commented 1 month ago

Try with python 3.10.9

JiaPai12138 commented 1 month ago

Try with python 3.10.9

Exactly the same error