diff options
Diffstat (limited to 'examples/windows/dll/hello-world.cpp')
-rw-r--r-- | examples/windows/dll/hello-world.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/examples/windows/dll/hello-world.cpp b/examples/windows/dll/hello-world.cpp new file mode 100644 index 0000000000..7483e9f070 --- /dev/null +++ b/examples/windows/dll/hello-world.cpp @@ -0,0 +1,30 @@ +#include <stdio.h> +#include <windows.h> +typedef char *(__cdecl *GET_TIME_PTR)(); +typedef void(__cdecl *SAY_HELLO_PTR)(char *); + +int main() { + HINSTANCE hellolib; + GET_TIME_PTR get_time; + SAY_HELLO_PTR say_hello; + + bool success = FALSE; + + hellolib = LoadLibrary(TEXT("hellolib.dll")); + + if (hellolib != NULL) { + get_time = (GET_TIME_PTR)GetProcAddress(hellolib, "get_time"); + say_hello = (SAY_HELLO_PTR)GetProcAddress(hellolib, "say_hello"); + + if (NULL != get_time && NULL != say_hello) { + success = TRUE; + char *now = get_time(); + say_hello(now); + } + FreeLibrary(hellolib); + } + + if (!success) printf("Failed to load dll and call functions\n"); + + return 0; +} |