関数にパラメーターを追加しようとしていますが、新しいパラメーターを構造体型にする必要があります。
dyld_decache.cppから、変更したい関数を次に示します。
void prepare_patch_objc_methods(uint32_t method_vmaddr, uint32_t override_vmaddr);
私はそれを次のように変更しました:
template <typename T>
void prepare_patch_objc_methods(typename T::type, uint32_t list_vmaddr, uint32_t override_vmaddr);
の実装内で、prepare_patch_objc_methods
出現method_t
するすべてのをに変更したところT
、正常にコンパイルされました。
構造体は次のmethod_t
ように定義されます。
struct method_t {
uint32_t name;
uint32_t types;
uint32_t imp;
};
では、この関数を呼び出すときに構造体型を渡すにはどうすればよいでしょうか。
私はこれをやろうとしました
this->prepare_patch_objc_methods(method_t, class_data->baseMethods, class_obj->data + offsetof(class_ro_t, baseMethods));
しかし、次のエラーが表示されます。'method_t' does not refer to a value