Package: dycall
DyCallRun exported symbols from native librariesℹ AboutDyCall is a cross platform GUI application which lets you call exported functions from
platform-native libraries."libraries" refers to dynamic libraries (a.k.a shared objects etc.).⚡ Features🔎 Follows platform-specific library search order.🧹 Automatic export name demangling for native libraries.#️⃣ Support for ordinal-only exports.↪️ Support foroutvariables.💡 Find out export names for non-native libraries as well.🛠 Standalone demangler for native ABI mangled names.🔆 Light and dark themes.📜 Multi-lingual interface. Currently only Hindi and Marathi are supported.🚲 Getting StartedDyCall requires Python 3.7+ with Tkinter installed.Install viapip:python -m pip install dycallYou can run it via:python -m dycall-guiYou can also install shortcuts (Windows and Linux only):python -m desktop-app install dycallThis will create shortcuts in Windows start menu or an equivalent place on Linux. You
can then run DyCall like any other app, pin it, etc.To uninstall, first remove any shortcuts if you installed them:python -m desktop-app uninstall dycallThen uninstall DyCall via pip:python -m pip uninstall dycall▶ UsageThe interface has changed a bit since I recorded this GIF❔ FAQ1️⃣ Is it non-blocking?Yes! Function calls are executed on a separate thread. Although, you cannot close DyCall
while a function is running. I don't think that's possible.2️⃣ How do I passnullptrorNULLas an argument?SelectTypeasvoid3️⃣ How do I pass Win32 data types?Win32 data types are justtypedefs to basic C data types.Use this table below for finding out the correct type to use:Win32DyCallPCSTR, LPCSTRchar*PWSTR, LPCWSTRwchar_t*BYTEuint8_tWORDuint16_tDWORDuint32_tHANDLEvoid*4️⃣ How to passoutvariables?There are no special data types foroutparameters, just pass them as normal types,
the changed values will be reflected after execution finishes.5️⃣ How to pass a buffer for anoutstring?When usingOUT Modefor strings, please ensure that none of the arguments are
overwritten to a value whose size/length is greater than that before calling; i.e. input
argument sizemust beequal to or greater than output argument size. If this is not
the case, you can fill theoutargument value with random data of length youknow
for sureis greater than what theoutstring will have. Since DyCall has no
mechanism to preallocate string buffers, attempts to read beyond theNULLcharacter
will result in memory violation errors and crash DyCall.6️⃣ How to find an ordinal-only export?Ordinal-only exports have names starting with an@followed by the ordinal number.7️⃣ I want to add/update a translationCheck theAdding Translationssection in the contributor's guide.🚀 RoadmapAutomatic call convention detection.Function prototype detection from header files or similar.Use a child process to execute, this ensures more stability.🤝 ContributingPlease check the contributor'sguide.You can contribute by adding translations, opening issues and filing pull requests. If
that cannot be an option for you, you can directly drop anemail. All
contributions are welcome and acknowledged.Contributors should also take a note of theCode of Conduct.© LicenseDyCallis distributed under the MIT License. SeeLICENSEfor more information.📧 ContactE-mail:demberto@protonmail.com🙏 AcknowledgmentsFlatIconBest-README-TemplateShieldsKeep A ChangelogAdditional acknowledgements have been made in the code.