#include #include #include #include #include #include #define ARGC_VALID 3 enum ARGV_FILE { IN = 1, OUT = 2 }; void show_help(void) { puts("Usage: defgen [lib.obj] [lib.def]"); } int main(int argc, char** argv) { if (argc != ARGC_VALID) { show_help(); return 0; } ksys_dll_t* obj_dll = _ksys_dlopen(argv[IN]); FILE* outfile = fopen(argv[OUT], "w"); if (!obj_dll) { printf("File '%s' not found!\n", argv[IN]); return 1; } if (!outfile) { printf("Unable to create file:'%s'!\n", argv[OUT]); return 2; } fprintf(outfile, "LIBRARY %s\n\n", basename(argv[IN])); fputs("EXPORTS\n", outfile); int i = 0; while (obj_dll[i].func_name) { fprintf(outfile, "%s\n", obj_dll[i].func_name); i++; } fclose(outfile); return 0; }