急!无法定位程序输入点!

急!无法定位程序输入点!,第1张

无法定位程序输入点,它到底什么怎么一回事?手把手教你如何解决无法定位程序输入点问题:

无法定位程序输入点都在什么时候出现:

1) 开机启动时进入系统时显示 无法定位程序输入点于动态链接上

2) 运行单机游戏/网络游戏时显示 无法定位程序输入点于动态链接上

3) 运行常用软件攻击时显示 无法定位程序输入点于动态链接上

什么原因导致 无法定位程序输入点?

1) 遭到病毒/木马侵害导致

2) 升级部分软件导致出现该问题

3) 用户 *** 作失败导致dll文件丢失

1软件升级是指新版本身问题。 2在升级中过程中失败导致(如,断电)。

无法定位程序输入点完美解决方案

1使用可牛系统急救箱

可牛系统急救箱是可牛免费杀毒最新研发的系统修复工具,该急救箱可以在第一时间对系统进行智能扫描,然后系统急救箱将提示您电脑存在的已知和未知问题,并快速修复。最新版可牛系统急救箱还增加了 IE打不开 桌面图标显示异常问题 桌面图标无法删除 等流行问题急救功能。

2手动添加缺少dll文件(注意:手动添加时会出系统错误情况,电脑知识薄弱者慎重考虑)

通过系统报错提示获得缺少dll文件名称

a) 网络下载你所需dll或他人电脑上下载

b) 开机→F8/F2→安全模式

c) 将缺少的dll放到C:\windows\system32\

最近,多种软件都出现了一个启动时的错误提示 “无法定位程序输入点_except_handler4_common于动态链接库msvcrtdll上”。

出现这个提示情况是:Windows Xp 系统; 软件包括:window live writer 2009, windows messenger 2009, firefox 35 等非常新的版本。

这个提示出现后,点击确定,并不影响程序的使用。这个问题出现的原因,其实微软自己的问题。可谓是微软的Vista 后遗症吧。

在 Vista 系统里,有个挺酷的功能,就是“程序缩略图”,有点3D效果,这个功能,调用了 dwmapidll 这个库,而 dwmapidll 又引用了 msvcrtdll 中的 _except_handler4_common 功能。

然而,在XP系统中,系统自带的 msvcrtdll 和 Vista 中的 msvcrtdll 版本不同, 并没有这个 _except_handler4_common ,结果就出现了启动程序时,遇到的 “无法定位程序输入点_except_handler4_common于动态链接库msvcrtdll上”的错误提示。

解决方法:

将 c:\windows\system32 下的 dwmapidll

改名,例如:改为 dwmapidllbak。

1、打开QQ电脑管家,点击右上角按钮切换到经典界面。

2、点击左下角的电脑诊所

3、进入后在软件硬件一项找到丢失dll文件。

4、进入后选择相对应的dll文件进行修复即可。

第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和:

LIBEXPORT_API int mySum(int a,int b){ return a+b;}

C# 导入定义:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAuto,CallingConvention=CallingConventionStdCall)]

public static extern int mySum (int a,int b);

}

在C#中调用测试:

int iSum = RefCommmySum(,);

运行查看结果iSum为5,调用正确。第一步试验完成,说明在C#中能够调用自定义的动态链接库函数。

第二步,我定义了字符串 *** 作的函数(简单起见,还是采用前面的函数名),返回结果为字符串:

LIBEXPORT_API char mySum(char a,char b){sprintf(b,"%s",a); return a;}

C# 导入定义:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAuto,

CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, string b);

}

在C#中调用测试:

string strDest="";

string strTmp= RefCommmySum("45", strDest);

运行查看结果 strTmp 为"45",但是strDest为空。我修改动态链接库实现,返回结果为串b:

LIBEXPORT_API char mySum(char a,char b){sprintf(b,"%s",a) return b;}

修改 C# 导入定义,将串b修改为ref方式:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAuto,CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, ref string b);

}

在C#中再调用测试:

string strDest="";

string strTmp= RefCommmySum("45", ref strDest);

运行查看结果 strTmp 和 strDest 均不对,含不可见字符。再修改 C# 导入定义,将CharSet从Auto修改为Ansi:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAnsi,CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, string b);

}

在C#中再调用测试:

string strDest="";

string strTmp= RefComm mySum("45", ref strDest);

运行查看结果 strTmp 为"45",但是串 strDest 没有赋值。第二步实现函数返回串,但是在函数出口参数中没能进行输出。再次修改 C# 导入定义,将串b修改为引用(ref):

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAnsi,CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, ref string b);

}

运行时调用失败,不能继续执行。

第三步,修改动态链接库实现,将b修改为双重指针:

LIBEXPORT_API char mySum(char a,char b){sprintf((b),"%s",a); return b;}

C#导入定义:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAnsi,CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, ref string b);

}

在C#中调用测试:

string strDest="";

string strTmp= RefComm mySum("45", ref strDest);

运行查看结果 strTmp 和 strDest 均为"45",调用正确。第三步实现了函数出口参数正确输出结果。

第四步,修改动态链接库实现,实现整数参数的输出:

LIBEXPORT_API int mySum(int a,int b,int c){ c=a+b; return c;}

C#导入的定义:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAnsi,CallingConvention=CallingConventionStdCall)]

public static extern int mySum (int a, int b,ref int c);

}

在C#中调用测试:

int c=0;

int iSum= RefComm mySum(,, ref c);

运行查看结果iSum 和c均为5,调用正确。

经过以上几个步骤的试验,基本掌握了如何定义动态库函数以及如何在 C# 定义导入,有此基础,很快我实现了变长加密函数在 C# 中的调用,至此目标实现。

三、结论

在 C# 中调用 C++ 编写的动态链接库函数,如果需要出口参数输出,则需要使用指针,对于字符串,则需要使用双重指针,对于 C# 的导入定义,则需要使用引用(ref)定义。

对于函数返回值,C# 导入定义和 C++ 动态库函数声明定义需要保持一致,否则会出现函数调用失败。定义导入时,一定注意 CharSet 和 CallingConvention 参数,否则导致调用失败或结果异常。运行时,动态链接库放在 C# 程序的目录下即可,我这里是一个 C# 的动态链接库,两个动态链接库就在同一个目录下运行。

那么出现无法定位程序输入点 于动态链接库上是什么原因造成的?

一、电脑感染木马病毒导致的

比较典型的病毒是绑架类木马,它是一种新型破坏性极强的木马,与传统病毒不同,它是通过绑架系统文件dll实现开机启动。

解决方案(修复方法)

(一)、软件修复方法:

1、金山卫士

进入金山卫士主界面,选择“查杀木马”,然后点击“快速扫描”即可。通过金山卫士对木马病毒的查杀,而且还可以修复相关dll组件。

2、巨盾木马专杀工具

利用巨盾的内存扫描就可以将这些问题解决。巨盾内存扫描不但会清除木马文件,还会将被木马修改的系统文件还原回来,这样大家在打开程序是就不会出现无法定位程序输入点于动态链接库上的问题了。

3、下载安装主流杀毒软件(NOD32、卡巴斯基、小红伞、Avast、McAfee、诺顿、瑞星、金山毒霸、360安全卫士等),更新病毒库之后全盘杀毒。

(二)、手动修复方法:

记住d出的“无法定位程序输入点于动态链接库上”提示框中提到的dll文件,将系统提示缺少的dll记录下来。重点检查该文件是否有异常,重新复制一份该dll文件到相应的目录(文件夹)下基本就可以解决问题。

1、下载需要的dll文件

通过百度搜索需要的dll文件,把你需要的dll(加上DLL后缀,比如WININETdll)输入到搜索框中,点击“百度一下”按钮,从列出的网页中,选择你要下载dll的网站,进入并下载需要的dll文件。

注意:搜索时一定要安装杀毒软件,并打开防火墙,以免因无法定位程序输入点的问题导致进入钓鱼网站或挂马网站,引起电脑中毒。

2、重新启动电脑,按F8键,进入安全模式。

3、将下载的dll文件拷贝到 C:\windows\system32\ 文件夹(目录)下。

4、再重新启动电脑,便可以解决此问题。

注意:如果是游戏程序缺少DLL,下载之后需要将DLL复制到该游戏目录下的指定位置(由于游戏分类众多,所需DLL和位置 各有不同,这需要您在实践中摸索)。

二、更新程序,升级某个软件(或游戏)导致的。

在软件或游戏在线更新时,本该被正常写入或覆盖的DLL动态链接库文件因为意外的断电、重启、写入错误等原因没有下载更新成功,导致软件或游戏在运行过程中缺少必要的DLL动态链接库文件而报错。

解决方案(修复方法):一般来说,重新覆盖安装,即可解决问题。

三、随意删除系统文件,用户自己 *** 作失误造成的。

用户误 *** 作,不小心将程序安装目录中的动态链接库DLL文件删除了,导致程序启动时无法找到相应的文件而报错。

解决方案(修复方法):出现这种情况,需要大家仔细回忆出现问题之前进行过哪些 *** 作,重新下载软件覆盖安装或者到别的电脑上复制一份同名的系统文件,通过这些处理也可以解决问题。

如果以上方法无法解决“无法定位程序输入点 于动态链接库上”的问题,请重新安装系统、软件或游戏。

以上就是关于急!无法定位程序输入点!全部的内容,包括:急!无法定位程序输入点!、无法定位程序输入点、无法定位程序输入点 如图怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9779520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存