Compartir a través de


Advertencia de las herramientas del vinculador LNK4092

la sección "section" compartida grabable incluye reubicaciones; es posible que la imagen no se ejecute correctamente

Observaciones

El enlazador emite esta advertencia siempre que tenga una sección compartida para advertirle de un problema potencialmente grave.

Una manera de compartir datos entre varios procesos es marcar una sección como "compartida". Pero marcar una sección como compartida puede provocar problemas. Por ejemplo, supongamos que tiene un archivo DLL que incluye declaraciones como esta en una sección de datos compartidos:

int var = 1;
int *pvar = &var;

El enlazador no puede resolver pvar porque su valor depende de dónde se cargue el archivo DLL en la memoria, por lo que coloca un registro de reubicación en el archivo DLL. Cuando el archivo DLL se carga en la memoria, la dirección de var se puede resolver y pvar se puede asignar. Si otro proceso carga el mismo archivo DLL pero no puede cargarlo en la misma dirección, la reubicación de la dirección de var se actualizará para el segundo proceso y el espacio de direcciones del primer proceso apuntará a la dirección incorrecta.