Linker Tools Error LNK1179

invalid or corrupt file: duplicate COMDAT 'filename'

An object module contains two or more COMDATs with the same name.

This error can be caused by using /H, which limits the length of external names, and /Gy, which packages functions in COMDATs.

Example

In the following code, function1 and function2 are identical in the first eight characters. Compiling with /Gy and /H8 produces a link error.

void function1(void);
void function2(void);

int main() {
    function1();
    function2();
}

void function1(void) {}
void function2(void) {}