./create_simple_dll
#include <windows.h>
#include <stdio.h>
#include <string.h>
typedef int (*add_func_t)(int, int);
typedef void (*processData_func_t)(char*, int);
int main(void) {
char string[] = "Hello from EXE";
printf("%s\n", string);
const char* dllName = "simple-dl.dll";
HMODULE h = LoadLibraryA(dllName);
if (!h) {
DWORD err = GetLastError();
printf("LoadLibraryA failed (error %lu). Make sure %s is in the same folder.\n", err, dllName);
return 1;
}
add_func_t add = (add_func_t)GetProcAddress(h, "add");
if (!add) {
DWORD err = GetLastError();
printf("GetProcAddress failed (error %lu).\n", err);
FreeLibrary(h);
return 1;
}
int a = 7, b = 5;
int result = add(a, b);
printf("add(%d, %d) = %d\n", a, b, result);
processData_func_t processData = (processData_func_t)GetProcAddress(h, "processData");
if (!processData) {
printf("GetProcAddress for processData failed.\n");
} else {
char testData[] = "yappare is the best hacker\n";
printf("Original: %s\n", testData);
processData(testData, 6);
printf("Processed: %s\n", testData);
}
FreeLibrary(h);
return 0;
}