Я пытаюсь связать файл символа с искаженными сгенерированными из заголовка.
(сопоставление функций ПЗУ с функциями ОЗУ.)
В .sym у меня есть функция с параметром " PFvv ",
обычно ограничивается -> VOID (fn *) (VOID).
Вместо этого компилятор создает следующий вывод в качестве параметра: PFYvv
Результат: компоновщик не связывается.
Вопросы
Что означает Y?
Есть ли справочный документ по калечению ARM?
. Искаженное имя:
_ZN10CCasd15lolEP13strPcPFvvEhPvm
имя, сгенерированное компилятором:
_ZN10CCasd15lolEP13strPcPFYvvEhPvm
.h определение
class CCasd{
static int lol(in_str*h, char* name, void(*fn)(void), unsigned char p, void *s, unsigned long l);
};
КОД ОТВЕТА :
Вот как вы можете генерировать искаженные имена PFvv и PFYvv:
#ifdef __cplusplus
extern "C" { /* C declarations in C++ */
#endif
class CCASD {
public:
static int lol(in_str*h, char* name, void(*fn)(void), unsigned char p, void *s, unsigned long l);//Will be PFYvv
};
#ifdef __cplusplus
} /* End of C declarations */
#endif
class CCASD {
public:
static int lol(in_str*h, char* name, void(*fn)(void), unsigned char p, void *s, unsigned long l);//Will be PFvv
};