编译器警告(等级 1)C4835

“variable”:在主机程序集中首次执行托管代码之后,才能运行导出数据的初始值设定项

在托管组件之间访问数据时,不建议使用本机 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