作者:朱金灿
来源:http://blog.csdn.net/clever101/
使用VS 2008新建一个MFC ActiveX工程,因为在工程里要用到GDI+。我习惯把初始化GDI+库的代码放在应用程序类的InitInstance函数,对应的销毁代码放在ExitInstance函数。具体如下:
先在应用程序类里定义一个数据成员:
然后添加初始化GDI+库的代码和对应的销毁代码:
结果在编译时老是出现一个问题,就是编译时输出窗口:
1>Embedding manifest...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>Registering output...
到了这里,VS 2008就像停滞一样,半天不反应,直到我取消生成。我以为是VS 2008的bug,因为我用VS 2010编译这个工程并无这个现象(这个实在有点令人奇怪!)。到论坛一问,蒋晟大侠告知:在DllMain的封装函数InitInstance中有加载其他DLL造成了死锁。
怎么解决这个问题呢?一种方法是写两个接口函数分别实现初始化GDI+库和对应的销毁功能。我懒得写两个接口函数,干脆把这个工作放在ActiveX控件类(派生自COleControl的那个类)的构造函数和析构函数里。
分享到:
相关推荐
DllMain和多线程死锁[归类].pdf
易语言从内存加载DLL源码。@易语言资源网站。
收集网络上关于 freelibrary 死锁 问题
MFC 规则DLL 添加自定义的 DLLMAIN() 函数!(Vc6.0 与 Vc8.0 同样适用) 这也是我自己一直困扰了好久的问题,本来编程水平就不高,总想借助MFC的类库编写程序,方便不少啊!但是MFC规则DLL中却不提供DLLMAIN()函数...
DllMain带有三个参数,hModule表示本dll的实例句柄(听不懂就不理它,写过windows程序的自然懂),dwReason表示dll当前所处的状态,例如DLL_PROCESS_ATTACH表示dll刚刚被加载到一个进程中,DLL_PROCESS_DETACH表示...
跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain。以“DllMain”为关键字,来看看MSDN帮助文档怎么介绍这个函数的。@绿色的可达鸭。
首先,我们在写DLL的时候,需要在DLL函数里面加上DllMain函数,可以在这里面写上你自己的函数,windows在用LoadLibrary加载DLL后调用会DllMain函数,而你把自己的函数已经先写在在DllMain里面了,那么你的函数也自然就执行...
加载DLL 带有 GUI 的更好版本的 RunDll。 该程序允许您在 Windows 上加载 DLL。 您可以选择加载 DLL 的方式。 通过直接入口点调用 (DllMain) 或者如果您想直接调用 DLL 的导出函数。支持的调用约定现在我支持 ...
DLL的进入点函数DllMain
可用于侧面加载和其他攻击媒介的Dll。此Dll不会导致死锁,因为它仅使用如下所述的DllMain安全的功能。 为什么? 我看到太多的POC与在DLL_PROCESS_ATTACH执行的代码。实际上,大多数情况下,恶意代码无法按照...
易语言让EXE程序也能拥有DllMain通知源码,可以用来监视线程的加载和销毁。@醉酒成梦°。
020-1-DLL动态链接库及入口函数 BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: //第一次将一个DLL映射到...
6.4 MFC扩展DLL加载MFC扩展DLL 6.5 MFC扩展DLL导出函数和变量 6.6 MFC扩展DLL的应用 第五章:VC++动态链接库编程之DLL典型实例 7.1 算法DLL 7.2纯资源DLL 7.3通信控制DLL 第六章:VC++动态链接库编程之DLL木马 6.1、...
关于DLLMAIN()入口函数的讨论,是讨论关于DLLMAIN()这个DLL入口函数的重要性和必要性的问题,我用VS2005列举了两个例子供大家参考.同时讨论了VC的约定的重要性,我在写这两个例子的时候就遇到同样的问题,用了一个上午的...
error LNK2005: DllMain already defined in corelibc.lib(dllmain.obj)的解决方案
Dll动态链接库有个入口函数DllMain,这是我对DllMain的详解。 DllMain的详解:见我的博客http://blog.csdn.net/benkaoya/archive/2008/06/02/2504781.aspx
根据编写规范,Windows必须查找并执行DLL里的DllMain函数作为加载DLL的依据,它使得DLL得以保留在内存里。这个函数并不属于导出函数,而是DLL的内部函数,这就说明不能在客户端直接调用DllMain函数,DllMain函数是...
在做MFC的动态库时,经常会遇DllMain重定义的问题,此问题让很多开发人员十分烦恼,其实主要是自己添加的DllMain和MFC内部封装的入口函数冲突,希望此文件能帮您解决问题。