Aviso do compilador (nível 1) C4835

'variable': o inicializador para dados exportados não será executado até o código gerenciado ser executado pela primeira vez no host assembly

Ao acessar dados entre componentes gerenciados, é recomendável não usar mecanismos nativos de importação e exportação do C++. Em vez disso, declare seus membros de dados dentro de um tipo gerenciado e faça referência aos metadados com #using no cliente. Para obter mais informações, confira Diretiva #using.

Exemplos

O exemplo a seguir gera 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

O exemplo a seguir consome o componente criado no exemplo anterior, mostrando que o valor das variáveis não é o esperado.

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