dll的环境变量与exe不同

Aar*_*reP 4 c++ variables environment dll

我正在调试一个64位应用程序,其中c#exe在Windows 7上使用本机c ++ dll.看起来这两个环境变量是不同的,即使它们都在同一个进程中执行.如何调用System.Environment.SetEnvironmentVariable对getenv()返回的值没有影响?

Ste*_*art 6

环境变量只是一个数据块,它在启动时由窗口传递给进程.您正在使用的运行时函数(用于System.Environment的BCL和用于getenv的CRT)可能在启动期间创建环境的副本,这意味着它们不在相同的"环境"变量上运行.

从概念上讲,他们必须这样做,因为否则需要某种方式来同步他们访问环境.