New submission from Paul Moore <p.f.mo...@gmail.com>:

I am writing a small application using the embedded distribution to run a 
script supplied by the user. The requirements are very simple, so all I need to 
do is set up argv and call Py_Main.

I'm trying to load the Py_Main function dynamically (for flexibility - see 
below) but GetProcAddress returns 0 when loading the function from python3.dll 
(the stable ABI). This seems to be because the symbols in python3.dll are 
special "fowarding" symbols, that GetProcAddress can't handle.

Is there a way to dynamically load the Python API from the stable ABI? If there 
isn't currently, could one be added?

To explain my requirements in a bit more detail, I don't want to statically 
link, because I want to put the Python distribution in a subdirectory, so that 
it isn't visible on PATH along with my executable, but I'd rather avoid the 
complexities involved in adding a dedicated SxS manifest to point the loader to 
the correct subdirectory for the python3.dll.

Furthermore, I want to provide a graceful fallback if the Python distribution 
is missing (initially, just a friendly error message, but in future maybe 
locating an alternative Python installation to use) and static linking won't 
allow that as I can't recover control if the expected Python DLL isn't present.

The reason I want to use the stable ABI is so that I can upgrade the embedded 
distribution without needing to rebuild the C code. I could search for 
python3X.dll, and just ignore the stable ABI. But that's more filesystem code 
than I really want to write in C... And honestly, I feel that dynamically 
linking is a perfect use case for the stable ABI, so it really should be 
supported.

----------
components: Windows
messages: 385621
nosy: paul.moore, steve.dower, tim.golden, zach.ware
priority: normal
severity: normal
status: open
title: Unable to dynamically load functions from python3.dll
type: behavior
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue43022>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to