2012-04-20 50 views
1

Windows应用程序动态链接CRT。应用程序执行其部分代码后,它将加载共享库。共享库与CRT静态链接。与共享库和应用程序的CRT链接

我的问题是:

如果应用程序在DLL的代码做了一些修改为“CRT状态”(例如重新打开标准输出的一些文件), 将这些变化是有效的?

谢谢

回答

1

不,静态链接CRT完全独立于动态加载的CRT。文件表是不同的,堆是不同的,一切都不一样。

+1

谢谢。但我仍然不明白为什么在这种情况下,printf结果将转到文件,而不是“屏幕”,如果重新打开只在应用程序中完成。 – Yakov 2012-04-20 11:04:09

+0

CRT有可能使用['SetStdHandle'函数](http://msdn.microsoft.com/en-us/library/windows/desktop/ms686244(v = vs.85).aspx)重定向stdout到一个文件。在这种情况下,DLL *会受到影响,因为每个进程只有一个内核接口。我相信MSVC带有CRT源代码,所以你可以通过调试来检查。 – 2012-04-20 19:48:11