Code: Select all
#define EXPORT __attribute__((visibility("default"), used, retain)) extern "C"
EXPORT void ios_prepare_request(const char *url) {
// some obj-c code
}
< /code>
Dann wird intern ein Dylib geladen. Dieser Dylib versucht, diese Funktionen aufzurufen. Es gibt einen Stripping -Schritt, der meine globalen Symbole beseitigt. Wenn ich versuche, irgendwann eine der Funktionen von der Dylib aufzurufen, wird eine Nullzeigerreferenz und die App abgestürzt. PrettyPrint-Override "> s.user_target_xcconfig = {
'STRIP_STYLE' => 'non-global'
}
< /code>
Ich habe versucht, dies mit Hilfe eines der Apple -Ingenieure zu umgehen. Sein Vorschlag ist, einen Linker -Flag -Export_Symbols_List zu verwenden, aber egal was ich ausprobiert habe, funktioniert nicht. Standardmäßig erzeugt Cocoapods eine statische LIB, sodass Exporte_Symbol_List
s.preserve_paths = 'exports.exp'
s.pod_target_xcconfig= {
'OTHER_LDFLAGS' => '$(inherited) -Wl,-exported_symbols_list,$(PODS_TARGET_SRCROOT)/exports.exp',
}
< /code>
Beim Erstellen eines statischen LIB-Claude schlägt die Verwendung eines -U < /code> -Flags vor und über jedes Symbol über das Leben zum Leben. Dies funktioniert jedoch auch nicht
< /ul>
">"> ">"> "> s.user_target_xcconfig = {
'OTHER_LDFLAGS' => '$(inherited) -Wl,-u,_ios_prepare_request'
}
< /code>
Zu diesem Zeitpunkt habe ich aus Ideen, wie man verhindern kann, dass die globalen Symbole strippiert werden. Dies ist jedoch ziemlich mühsam. Ich möchte immer noch, dass globale Funktionen funktionieren.