Пытаясь выяснить, почему я получаю неразрешенные символы при связывании с сторонним dll, я наткнулся на (своего рода) программное решение.
Я написал небольшую программу для Windows API, используя UnDecorateSymbolName
из Dbghelp.h
для декодирования схемы искажения:
#include "Windows.h"
#include "Dbghelp.h"
#include "tchar.h"
int _tmain(int argc, _TCHAR* argv[])
{
CHAR out[512];
UnDecorateSymbolName(
// Mangled symbol
"?OFFReader@IO@OpenMesh@@YGAAV_OFFReader_@12@XZ",
out,
// Length of symbol
46,
UNDNAME_32_BIT_DECODE);
}
Есть определенно более красивые способы сделать это. Я просто запускаю его в отладчике и смотрю содержимое out.
Также стоит отметить, вопреки ответу Игнасио, разница между искаженными именами для cdecl
методов в dll и stdcall
, которые искали, была YAAAV
против YGAAV
.