Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 1) C4835

"zmienna": inicjator wyeksportowanych danych nie zostanie uruchomiony do momentu pierwszego wykonania kodu zarządzanego w zestawie hosta

Podczas uzyskiwania dostępu do danych między składnikami zarządzanymi zaleca się, aby nie używać natywnych mechanizmów importowania i eksportowania języka C++. Zamiast tego zadeklaruj elementy członkowskie danych wewnątrz typu zarządzanego i odwołuj się do metadanych #using w kliencie. Aby uzyskać więcej informacji, zobacz #using Dyrektywy.

Przykłady

Poniższy przykład generuje kod 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

Poniższy przykład używa składnika wbudowanego w poprzednim przykładzie, pokazując, że wartość zmiennych nie jest zgodnie z oczekiwaniami.

// 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