Avviso del compilatore (livello 1) C4835

'variable': l'inizializzatore per i dati esportati non verrà eseguito fino a quando il codice gestito non viene eseguito per la prima volta nell'assembly host

Quando si accede ai dati tra componenti gestiti, è consigliabile non usare meccanismi di importazione ed esportazione C++ nativi. Dichiarare invece i membri dati all'interno di un tipo gestito e fare riferimento ai metadati con #using nel client. Per altre informazioni, vedere Direttiva #using.

Esempi

L'esempio seguente genera l'errore C4835.

// C4835.cpp
// compile with: /W1 /clr /LD
int f() { return 1; }
int n = 9;

__declspec(dllexport) int m = f();   // C4835
__declspec(dllexport) int *p = &n;   // C4835

Nell'esempio seguente viene utilizzato il componente compilato nell'esempio precedente, che mostra che il valore delle variabili non è come previsto.

// C4835_b.cpp
// compile with: /clr C4835.lib
#include <stdio.h>
__declspec(dllimport) int m;
__declspec(dllimport) int *p;

int main() {
   printf("%d\n", m);
   printf("%d\n", p);
}
0
268456008