Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/mingw/samples/dlltest/loadexe.c')
-rw-r--r--winsup/mingw/samples/dlltest/loadexe.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/winsup/mingw/samples/dlltest/loadexe.c b/winsup/mingw/samples/dlltest/loadexe.c
new file mode 100644
index 000000000..c5a84dc01
--- /dev/null
+++ b/winsup/mingw/samples/dlltest/loadexe.c
@@ -0,0 +1,47 @@
+/*
+ * This program attempts to load expexe.exe dynamically, get the address of the
+ * ExportedFromExe function, and then call it.
+ *
+ * This example DOES NOT WORK! I don't know exactly what can be done, but
+ * it simply seems that LoadLibrary refuses to load executables.
+ */
+
+#include <stdio.h>
+#include <windows.h>
+
+int (*ExportedFromExe)();
+
+int main()
+{
+ HINSTANCE hDll;
+ int i, j, k;
+
+ hDll = LoadLibrary ("expexe.exe");
+ if (!hDll)
+ {
+ printf ("Error %d loading exe.\n", GetLastError());
+ exit (-1);
+ }
+
+ if (!(ExportedFromExe = GetProcAddress (hDll, "ExportedFromExe")))
+ {
+ printf ("Error %d getting ExportedFromExe function.\n",
+ GetLastError());
+ exit (-1);
+ }
+ else
+ {
+ ExportedFromExe ();
+ }
+
+ /* NOTE: Unlike a DLL the exe doesn't have an entry point which
+ * initializes global objects and adds __do_global_dtors to
+ * the atexit list. Thus it should be safe(?) to free the
+ * library. Of course, this also makes it unsafe to use
+ * executables at all in this manner.
+ */
+ FreeLibrary (hDll);
+
+ return 0;
+}
+