惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
博客园_首页
H
Help Net Security
博客园 - Franky
V
Visual Studio Blog
Jina AI
Jina AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
J
Java Code Geeks
L
LangChain Blog
腾讯CDC
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
爱范儿
爱范儿
Google DeepMind News
Google DeepMind News
C
Check Point Blog
博客园 - 聂微东
罗磊的独立博客
量子位
M
MIT News - Artificial intelligence
F
Fortinet All Blogs

博客园 - Cloudage

测试:单、多帧自动拼块地图及视口卷动 测试了测试了,silverlight做游戏的可能性 IMH 这次的卡渲还算过得去 严重警告!关于D3D的渲染表面 今天开始研究Tiny 小改一下 这是一个关键……可是这个门槛我上不去了 恭贺本人加入KidFansChannel特别创作组 序列化 用Sprite做Billboard 漏图 玩家通过自主绘制法术阵来自定义法术的初步实现的思考 优化……优化…… Billboard的旋转以及让物体面向一个点的一种方法 卡通渲染原理 游戏系统的结构是怎样的? 同层物体间的遮挡处理
“应用程序LoaderLock”异常的引发和解决
Cloudage · 2006-08-22 · via 博客园 - Cloudage

在进行.NET下EXE+DLL的开发时,如果DLL项目引用的一些程序集没有被EXE项目引用,则程序有可能在启动时引发这个异常。如:

DLL项目引用了Microsoft.DirextX.Direct3D,并且公开了一个Microsoft.DirectX.Direct3D.Device Proc(System.Drawing.Forms.Form)函数,而EXE项目并没有引用Microsoft.DirectX.Direct3D程序集,却在Form1.Shown事件的响应函数中调用了Proc,那么窗体显示后就一定会引发LoaderLock异常。另外即使Proc不返回Device,即EXE并不直接获取Device对象,这个异常同样会发生。

解决方法很简单,一种方法是如果DLL引用了一些特殊的程序集,那么EXE也一定要把它们引用上。还有一种比较离谱的方法,就是将DLL换成后台服务,异线程与EXE交流,并且不要牵扯非公用程序集的数据结构。
其实比较常规的做法是DLL和EXE项目都去引用一个Common项目,该项目中包含两者交流所共用的数据结构。