摘要:
创建 DLL 的 C++ 托管扩展项目默认包含 MSIL(微软中间语言)代码,这个代码并不与 C 运行时库(CRT),ATL 或 MFC 这样的本机 C/C++ 库链接,也不使用任何静态变量。其代码只面向公共语言运行时。
之所以要这么做是因为带有入口点的链接导致 DllMain 期间运行托管代码,这样不安全(参见 DllMain 相关文档,了解在它执行期间你不能做那些事情)。
不带 入口点的 DLL 无法初始化静态变量,非常简单的类型如整型除外。通常,在 /NOENTRY DLL 中,你不能有任何静态变量。
ATL,MFC 和 CRT 库都依赖于静态变量,所以你也不能在该 DLL 中使用这些库。
如果你的混合模式 DLL必须使用静态变量或者依赖静态变量的库(如:ATL,MFC 或 CRT),那么你必须修改你的 DLL,使之具备外在入口点。
为此,必须将托管 DLL 转换为混合模式。那么,
如何将将托管 DLL 转换为混合模式? 阅读全文
posted @ 2007-12-09 09:17
元宝
阅读(597)
评论(0)
推荐(0)

浙公网安备 33010602011771号