Das ist Unsinn, die Name Manglings variiren je nach Compiler und Version des Compilers, d.h. das OS wäre z.B. nicht zu neueren Versionen des GCC kompatibel als der, die der Entwickler hat.
Alle Funktionen, die von C/ASM aus aufgerufen werden, müssen als extern "C" deklariert werden. ASM und C Funktionen müssen auch in den Headern als extern "C" deklariert werden.
Ausserdem sollte man beachten, das man in ASM den Funktionen einen Unterstrich (_) voransetzt, falls man Windows benutzt. Wenn man Linux benutzt darf man das nicht, sonst findet der Linker die Funktionen nicht.
Beispiel:
C Funktion:
int do_something() {
return 10;
}
CPP Funktion:
extern "C" int do_something_other() {
return 20;
}
ASM Funktion (Ich gehe davon aus, das Win benutzt wird):
[global _asm_function]
_asm_function:
mov eax, 30
ret
Headerfile um von C++ auf die C/ASM Funktionen aufrufen zu können:
[...]
extern "C" unsigned int asm_function();
extern "C" int do_somethings();
[...]
Jetzt lassen sich sowohl die C/ASM als auch die C++ Funktionen von der jeweils anderen Sprache aufrufen.