Поделиться через


Предупреждение компилятора (уровень 1) C4835

"переменная": инициализатор экспортированных данных не будет выполняться до тех пор, пока управляемый код не будет выполнен в сборке узла.

При доступе к данным между управляемыми компонентами рекомендуется не использовать собственные механизмы импорта и экспорта C++. Вместо этого объявите элементы данных в управляемом типе и ссылайтесь на метаданные #using в клиенте. Дополнительные сведения см. в разделе Директива using.

Примеры

Следующий пример приводит к возникновению ошибки 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

В следующем примере используется компонент, встроенный в предыдущий пример, показывающий, что значение переменных не соответствует ожидаемому.

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