Проверка во время выполнения на наличие функции в программе

Я пишу программу, которая должна быть расширена некоторыми определениями функций. Одним из способов компиляции программы является создание единого исполняемого файла, связывающего ваш код с основным кодом. Проблема в том, что одна из определяемых функций является необязательной, и мне нужно проверить это.

В 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?

1 ответ

Решение

Итак, в конце я отвечу на свой вопрос...

Вы должны связать с флагом -Wl,--export-all-symbols и это работает...

Другие вопросы по тегам