Я пишу программу, которая должна быть расширена некоторыми определениями функций. Одним из способов компиляции программы является создание единого исполняемого файла, связывающего ваш код с основным кодом. Проблема в том, что одна из определяемых функций является необязательной, и мне нужно проверить это.
В Linux вот что я делаю:
Скомпилируйте программу с опцией "-rdynamic" для g ++ или "--export-dynamic" для ld. Затем используйте ldsym так:
fct_type myfct = (fct_type)dlsym(RTLD_DEFAULT, "fct");
Если в программе существует функция "fct", она вернет свой адрес, в противном случае вернет NULL.
Теперь в Windows я должен быть в состоянии сделать это:
dll_handle = GetModuleHandle(0);
fct_type myfct = (fct_type)GetProcAddress(dll_handle, "fct");
Но в MinGW32 нет опции "-rdynamic" или "--export-dynamic" для g ++! Так что это не работает. Кто-нибудь знает, что делать на windows с MinGW32?