Поделиться через


Ошибка средств компоновщика LNK1237

во время создания кода компилятор представил ссылку на символ "символ", определенный в модуле "module", скомпилированный с /GL

Замечания

Во время создания кода компилятор не должен вводить символы, которые позже разрешаются в определения, скомпилированные /GL. symbol — это символ, который был введен и позже разрешен в определение, скомпилированное с помощью /GL.

Дополнительные сведения см. в разделе /GL (Оптимизация всей программы).

Чтобы разрешить LNK1237, не используйте /GL для компиляции символа или используйте /INCLUDE (принудительное использование ссылок на символы) для принудительной ссылки на символ.

Пример

Следующий пример создает LNK1237. Чтобы устранить эту ошибку, не инициализировать массив LNK1237_a.cpp и добавить /include:__chkstk в команду ссылки.

Исходный файл LNK1237_a.cpp:

// LNK1237_a.cpp
int main() {
   char c[5000] = {0};
}

Исходный файл LNK1237_b.cpp:

// LNK1237_b.cpp
// compile with: /GS- /GL /c LNK1237_a.cpp
// processor: x86
// post-build command: (lib LNK1237_b.obj /LTCG & link LNK1237_a.obj LNK1237_b.lib /nodefaultlib /entry:main /LTCG)
extern "C" void _chkstk(size_t s) {}