J'ai une branche de l'infrastructure JavaScriptCore, dans laquelle j'ai ajouté une fonction qui est exportée. Le framework compile juste find. Courir nm
sur le cadre révèle que la fonction (JSContextCreateBacktrace_unsafe
) est en effet exporté:CFBundleGetFunctionPointerForName et dlsym return NULL pour la fonction exportée
Leo-Natans-Wix-MPB:JavaScriptCore.framework lnatan$ nm -gU JavaScriptCore.framework/JavaScriptCore | grep JSContextCreateBacktrace
00000000004cb860 T _JSContextCreateBacktrace
00000000004cba10 T _JSContextCreateBacktrace_unsafe
Cependant, je ne peux pas obtenir le pointeur de cette fonction à l'aide CFBundleGetFunctionPointerForName
ou dlsym
; les deux renvoient NULL
. Au début, j'ai utilisé dlopen
pour ouvrir mon framework, puis j'ai essayé d'utiliser CFBundleCreate
puis CFBundleGetFunctionPointerForName
mais cela retourne aussi NULL.
Ce qui pourrait causer cela?
Mise à jour
quelque chose de louche qui se passe. J'ai renommé l'une des fonctions JSC, et nm
reflète cela. Cependant, dlsym
est toujours capable de trouver la fonction avec le nom d'origine, plutôt que le renommé.
Exactement ce dont j'avais besoin. Merci pour la réponse bien fournie! –