Question

Je suis en train d'écrire un programme qui est destiné à être étendu par quelques définitions de fonction. L'un des moyens de compilation du programme est de créer un seul exécutable reliant votre code au code principal. Le problème est le suivant:. L'une des fonctions à définir est facultative et je dois tester que

Sur Linux, voici ce que je fais:

Compiler le programme avec l'option "-rdynamic" option g ++ ou "--export-dynamique" à ld. Utilisez ensuite ldsym comme ceci:

fct_type myfct = (fct_type)dlsym(RTLD_DEFAULT, "fct");

Si la fonction « fct » existe dans le programme, cela retourne son adresse, sinon, elle retourne NULL.

Maintenant, sous Windows, je suis censé être en mesure de le faire:

dll_handle = GetModuleHandle(0);
fct_type myfct = (fct_type)GetProcAddress(dll_handle, "fct");

Mais il n'y a pas d'option "-rdynamic" ou "--export-dynamique" à g ++ sur MingW32! Donc, cela ne fonctionne pas. Est-ce que quelqu'un sait quoi faire sur les fenêtres avec MingW32?

Était-ce utile?

La solution

Ok, donc à la fin, je vais répondre à ma question ...

Vous devez créer un lien avec le drapeau et il fonctionne -Wl,--export-all-symbols ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top