exe调用dll,当exe关闭后 宿主出错退出了。怎么回事?VC很正常

问题描述

我本来用VC6.0写的DLL。当exe退出的时候``宿主程序还是正常的运行.转到vs2003后`当exe退出时`宿主就出现内存出错`查百度`说是托管和非托管的问题`我看配置都是属于非托管的;-------------------------------------------DLL代码--------------------------------------------------------CMain.cpp就一个dialog资源`#include"stdafx.h"#include"ApiHook.h"#include"CMain.h"#ifdef_DEBUG#definenewDEBUG_NEW#endifBEGIN_MESSAGE_MAP(CApiHookApp,CWinApp)END_MESSAGE_MAP()CApiHookApp::CApiHookApp(){}//唯一的一个CApiHookApp对象CApiHookApptheApp;//CApiHookApp初始化BOOLCApiHookApp::InitInstance(){CWinApp::InitInstance();returnTRUE;}extern"C"__declspec(dllexport)boolSetHookGame(DWORDTreadID,DWORDSHUAA,DWORDiDate);//安装HOOKextern"C"__declspec(dllexport)boolUnstallHook();//卸载DLLstaticHHOOKhHook=NULL;//钩子句柄staticHINSTANCEhInst;//当前DLL句柄staticHWNDhwnd;LRESULTCALLBACKMyProc(intnCode,WPARAMwParam,LPARAMlParam);//安装钩子函数bool__declspec(dllexport)SetHookGame(DWORDTreadID,DWORDSHUAA,DWORDiDate){if(TreadID!=0&&SHUAA==0x90)//0x5566{//安装指定线程的钩子hHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)MyProc,theApp.m_hInstance,TreadID);if(hHook!=NULL){returntrue;}else{UnhookWindowsHookEx(hHook);returnfalse;}}else{UnhookWindowsHookEx(hHook);returnfalse;}}//---------------------------------------------------------------------------//钩子函数LRESULTCALLBACKMyProc(intnCode,WPARAMwParam,LPARAMlParam){if(nCode<0)return(CallNextHookEx(hHook,nCode,wParam,lParam));if(((DWORD)lParam&0x40000000)&&(HC_ACTION==nCode))//有键按下{if(wParam==VK_F12){if(!DLLMain){AFX_MANAGE_STATE(AfxGetStaticModuleState());DLLMain=newCCMain();CWnd*pCWnd=CWnd::GetForegroundWindow();DLLMain->Create(IDD_DLG,pCWnd);DLLMain->ShowWindow(SW_SHOW);}else{DLLMain->ShowWindow(DLLMain->IsWindowVisible()?SW_HIDE:SW_SHOW);}}}return(CallNextHookEx(hHook,nCode,wParam,lParam));}//---------------------------------------------------------------------------bool__declspec(dllexport)UnstallHook()//卸载DLL{return::UnhookWindowsHookEx(hHook);}//---------------------------------------------------------------------------

解决方案

解决方案二:
学习
解决方案三:
UP
解决方案四:
有可能是编译器问题,在05里遇到过,郁闷了很长时间,可程序拿到其他人机器上,同样的工程、代码就Pass!!很无奈啊@@
解决方案五:
半个月了,解决了吗?
解决方案六:
自己解决了..
解决方案七:
不知,帮顶

时间: 2024-11-02 03:16:18

exe调用dll,当exe关闭后 宿主出错退出了。怎么回事?VC很正常的相关文章

RAVFY.EXE,RAVWL.EXE,msdebug.dll,Servere.exe等的清除指南附SREng.EXE PowerRmv.com unlocker1.8.5.exe打_病毒查杀

本文的眼:注意这几个文件名RAVFY.EXE,RAVWL.EXE,msdebug.dll相当有迷惑性 一.提问:http://zhidao.baidu.com/question/23973092.html 二.分析: 1. 杀毒前关闭系统还原(Win2000系统可以忽略):右键 我的电脑 ,属性,系统还原,在所有驱动器上关闭系统还原 打勾即可.  清除IE的临时文件:打开IE 点工具-->Internet选项 : Internet临时文件,点"删除文件"按钮 ,将 删除所有脱机内

威金变种 rundl132.exe RichDll.dll,f1.exe,f2.exe,f3.exe,f4,exe,f5.exe,f11.exe解决方法_病毒查杀

威金变种 rundl132.exe RichDll.dll解决方法 该变种暂时还没被江民和卡巴查杀,并用了几个专杀就找到一个可查杀修复EXE文件! 病毒运行后,访问网络下载多个木马程序(f1.exe,f2.exe,f3.exe,f4.exe,f5.exe,f6.exe,f7.exe,f8.exe,f9.exe,f10.exe,f11.exe)并运行!生成以下病毒文件(感觉现在的病毒真是变态): C:\Documents and Settings\你的用户名\Local Settings\Temp

关于rundl132.exe vidll.dll LOGO1.exe 的清除方法_病毒查杀

最近有朋友问我关于这几个病毒的清理方法.口头上说的不是很详细,现在贴一个详细的分析和对策吧. 1.打开系统的"显示隐藏文件"并下载相应的杀毒软件和 维金EXE修复工具 (重要) 2.查看你的系统进程 结束可疑的病毒木马程序(用户名为你的当前用户) 如:rundl132.exe svchost32.exe logo1_.exe 可能还有SERVICES.EXE SMSS.EXE 等伪装的系统木马.可以用tskill 来结束这些进程. 3.找到木马所在的路径并删除,然后新建一个同名文件,并

怎样将打包成一个exe的 dll和exe分开(C#)

问题描述 ILMerge是将C#制作的WinForm应用程序(exe和所引用的dll)打包成一个.exe文件(不是打包成安装文件啊!).有什么工具将dll和exe分离出来 解决方案

使用LIBCTINY.LIB为EXE和DLL文件减肥

在 October 1996 column 我讨论过一个有关可执行文件大小的问题.那个时候,一个简单的 hello world 程序大约有32KB.在 Visual C++ 编译器更新了两个版本后,文件尺寸问题稍微得到了改善,同样的程序使用 Visual C++ 6.0 编译器现在只有28KB.在那时的专栏里,我使用了一个小的运行库来创建极小的可执行程序.虽然有不少局限,但是对决大多数的程序来说,它们运转得很好.这些局限已经存在相当长的一段时间了,我决心修正它们.同时也提供一个学习如何进一步减少

wpf dll和exe合并成一个新的exe

原文:wpf dll和exe合并成一个新的exe 微软有一个工具叫ILMerge可以合并dll exe等,但是对于wpf的应用程序而言这个工具就不好用了.我的这方法也是从国外一个博客上找来的.仅供大家参考. 第一步:把下面的代码写到你的项目文件的标准的Microsoft.CSharp下面,也就是.csproj的文件里 <Target Name="AfterResolveReferences"> <ItemGroup> <EmbeddedResource I

关于调用DLL后的程序打包的问题

问题描述 在写一个程序需要调用SharpZipLib来实现文件的压缩和解压缩功能..调用倒是没有问题..我是通过添加了对SharpZipLib.dll的引用以后,在用using来调namespace,然后就能用dll里面的类了.这样操作的话,编译后vs会把dll也同时放到输出目录里面,每次运行编译的可执行文件时都需要保证同一目录下有相应的dll文件.想问下各位高人们..有没有办法让vs编译生成单一的可执行文件呢..就是把我调用的dll也一起打包到可执行文件里面..?我试过把dll文件加入工程~~

winsys16_070307.dll,WindowsUpdate.exe的清除方法_病毒查杀

一.提问: IE有被劫持,Userinit.exe被改了(日志略) 二.分析 1. 杀毒前关闭系统还原(Win2000系统可以忽略):右键 我的电脑 ,属性,系统还原,在所有驱动器上关闭系统还原 打勾即可.   清除IE的临时文件:打开IE 点工具-->Internet选项 : Internet临时文件,点"删除文件"按钮 ,将 删除所有脱机内容 打勾,点确定删除. 关闭QQ等应用程序.进行如下操作前,请不要进行任何双击打开磁盘的操作.所有下载的工具都直接放桌面上. 2.用强制删

JScript教程:使用JScript创建.exe或.dll文件

文章简介:JScript 是由微软开发的活动脚本语言,基于 ECMAScript 规范实现.Internet Explorer 中的 JavaScript,实际上是指 JScript.JScript 已被 Windows Script Host(WSH)支持.JScript 最新的版本(JScript.NET)基于尚未定稿的 ECMAScript 4.0 ,并且可以在.Net环境下编 什么是 JScript? JScript 是由微软开发的活动脚本语言,基于 ECMAScript 规范实现.In