Avertissement du compilateur (niveau 1) C4835

'variable' : l’initialiseur pour les données exportées ne sera pas exécuté tant que le code managé n’est pas d’abord exécuté dans l’assembly hôte

Lors de l’accès aux données entre les composants managés, il est recommandé de ne pas utiliser de mécanismes d’importation et d’exportation C++ natifs. Au lieu de cela, déclarez vos membres de données à l’intérieur d’un type managé et référencez les métadonnées avec #using dans le client. Pour plus d’informations, consultez #using, directive.

Exemples

L’exemple suivant génère l’erreur 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

L’exemple suivant utilise le composant intégré à l’exemple précédent, montrant que la valeur des variables n’est pas comme prévu.

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