Предупреждение средств компоновщика LNK4092
Общий доступный для записи раздел "раздел" содержит перемещения; Образ может не выполняться правильно
Компоновщик выдает это предупреждение всякий раз, когда у вас есть общий раздел, чтобы предупредить вас о потенциально серьезной проблеме.
Один из способов совместного использования данных между несколькими процессами — пометить раздел как "общий". Однако маркировка раздела как общего может привести к проблемам. Например, у вас есть библиотека DLL, содержащая объявления, подобные этому, в разделе общих данных:
int var = 1;
int *pvar = &var;
Компоновщик не может разрешиться pvar
, так как его значение зависит от того, где библиотека DLL загружается в память, поэтому она помещает запись перемещений в библиотеку DLL. При загрузке библиотеки DLL в память адрес var
можно разрешить и pvar
назначить. Если другой процесс загружает ту же библиотеку DLL, но не может загрузить ее на тот же адрес, перемещение адреса var
будет обновлено для второго процесса, а адресное пространство первого процесса указывает на неправильный адрес.