我正在尝试将符号的文件与标头中生成的损坏的文件链接起来。(将 ROM 定位的功能与 RAM 的功能相匹配。)
在 .sym 中,我有一个带有“ PFvv ”参数的函数,通常被分解为 -> VOID (fn*)(VOID)。
编译器改为生成以下输出作为参数:PFYvv
结果:链接器没有链接。
问题:
Y 代表什么?是否有 ARM mangling 的参考文档?
.sym 错位名称:
_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
};