Why are un-exported functions’ names still listed in MinGW DLLs?

I have a DLL with these functions:

void __declspec(dllexport) foo1()
{
    printf("1");
}

void foo2()
{
    printf("2");
}

When opening the DLL in Dependency Walker, only foo1() is shown as exported, which is expected. However, when I opened the DLL file in a hex-editor, I noticed the string _Z4foo2v, which looks like an export-name.

But since foo2() is not marked for export, why is this string _Z4foo2v present?


Source: dll

Leave a Reply