无法定位程序输入点***与动态链接库api-ms-win-crt-runtime-l1-1-0.dll上。

***是各种程序,新装的win7家庭基础版就出现这个问题了,下面是打开迅雷出现的提示截图,还有其他程序也会出现。求大神们解决啊?不要说重装系统,要重装就不会来提问了,从网上下载这个dll文件到电脑上已经试过,没用。

第1个回答  推荐于2017-09-02
第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和:

LIBEXPORT_API int mySum(int a,int b){ return a+b;}
C# 导入定义:

public class RefComm
{
[DllImport("LibEncrypt.dll",
EntryPoint=" mySum ",
CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern int mySum (int a,int b);
}
在C#中调用测试:

int iSum = RefComm.mySum(,);

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

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

LIBEXPORT_API char *mySum(char *a,char *b){sprintf(b,"%s",a); return a;}
C# 导入定义:

public class RefComm
{
[DllImport("LibEncrypt.dll",
EntryPoint=" mySum ",
CharSet=CharSet.Auto,
CallingConvention=CallingConvention.StdCall)]
public static extern string mySum (string a, string b);
}
在C#中调用测试:

string strDest="";
string strTmp= RefComm.mySum("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("LibEncrypt.dll",
EntryPoint=" mySum ",
CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern string mySum (string a, ref string b);
}
在C#中再调用测试:

string strDest="";
string strTmp= RefComm.mySum("45", ref strDest);
运行查看结果 strTmp 和 strDest 均不对,含不可见字符。再修改 C# 导入定义,将CharSet从Auto修改为Ansi:

public class RefComm
{
[DllImport("LibEncrypt.dll",
EntryPoint=" mySum ",
CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]
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("LibEncrypt.dll",
EntryPoint=" mySum ",
CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]
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("LibEncrypt.dll",
EntryPoint=" mySum ",
CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]
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("LibEncrypt.dll",
EntryPoint=" mySum ",
CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]
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# 的动态链接库,两个动态链接库就在同一个目录下运行。本回答被网友采纳
第2个回答  2015-06-18
我也这两天遇到这个问题了,同问怎么解决
第3个回答  2015-06-16
入了心的怎么放

求大佬破解“无法定位程序输入点ucrtbase.abort与动态链接库api-ms...
这个情况可以用360安全卫士里的系统修复工具来处理一下的

api-ms-win-crt-runtime-l1-1-0.dll丢失怎么解决修复
方法一、1、首先下载文件(点击红字跳转下载)。2、将下载过来的dll文件复制到C:WindowsSystem32目录下。【如果您的系统是64位的请将32位的dll文件复制到C:WindowsSysWOW64目录】3、按Win+R打开运行。4、输入regsvr32 api-ms-win-crt-runtime-l1-1-0.dll,点击回车,注册dll。方法二、1、进入 C:W...

无法定位程序输入点ucrtbase terminate?
1、无法定位程序输入点***.terminate于动态链接库api-ms-win-crt-runtime-|1-1-0.dll1. 命令行输入winver.exe回车,如果你的windows版本是7600,恭喜你Game OVER!首先你要升级到7601即SP1。2、2. 然后安装 Microsoft .NET Framework 4.6.1最后安装 Visual C++ Redistributable for Visual S...

...于动态链接库api-ms-win-crt-runtime-|1-1-0.dll
Win7的话,必须要保持系统为最新,api-ms-win-crt-runtime-1-1-0.dll这个文件是Microsoft Visual C++ 2015 Redistributable的一部分,如果这个补丁没有安装,即使你把下载的dll文件放在system32依然没法用,然而这个补丁又依赖于Windows6.0-KB2999226,而KB2999226这个补丁又需要Win7 SP1的补丁包。所以综...

...动态链接库api-ms-win-crt-ryuntime-|1-1-0.dll 。
方法如下:1、U盘安装:用ultraiso软件,打开下载好的系统安装盘文件(ISO文件),执行“写入映像文件”把U盘插到电脑上,点击“确定”,等待程序执行完毕后,这样就做好了启动及安装系统用的u盘,用这个做好的系统u盘引导启动机器后,即可顺利重装系统了;2、硬盘安装:前提是,需要有一个可以正常运行的...

...动态连接库api-ms-win-crt-private-|1-1-0.dll上 什么问题
找到战网图标--然后右键--设置--拉到最下面,把"在可用的情况下使用浏览器硬件加速" 前面的√去掉。这个问题是 战网客户端更新以后出现的问题!如果按照上述设置了,战网还是空白,那么先退出 战网,找到 暴雪战网 -- 然后右键 -- 属性 -- 兼容性 , 勾选 "以兼容模式运行这个程序"再打开试试~...

api-ms-win-crt-runtime-l1-1-0.dll无法定位怎么解决?
找出提示“无法定位程序输入点 于动态链接库xxxx.dll上”错误的信息,将系统提示缺少的xxxx.dll记录下来;百度搜索您已经记录下来的xxxx.dll信息,在百度搜索中输入xxxx.dll(加上DLL后缀),尝试通过网络下载 xxxx.dll(目前大多数系统动态链接库DLL文件都可以通过网络下载到),将下载到得DLL保存到U盘或指定...

《绝地求生大逃杀》启动闪退显示无法定位程序输入点解决方法
问题描述:游戏启动闪退,显示【无法定位程序输入点ucrtbase.abort于动态链接库api-ms-win-crt-runtime-1-1-0.dll】解决方法:方法一:安装这两个微软的升级包1. Windows6.1-KB976932-X64.exe 官网下载2. Windows6.1-KB2999226-x64.msu 官网下载方法二:使用杀毒软件等工具中的专修工具来修复这个...

无法定位程序输入点 GetRequestedRuntimeInfo 于动态链接库 mscoree.dll...
1、如何了解某应用程序使用哪些DLL文件 右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。 2、如何知道DLL文件被几个程序使用 运行Regedit,进入HKEY_LOCAL_MACHINE\\Software\\Microsrft\\Windows\\Current-Version\\Shared...

安装Office 2016启动Acrobat时出现"无法找到入口"错误怎么办_百度知 ...
有用户反映在安装了 Office 2016 的 Windows 7 SP1 计算机上,当启动 Acrobat 时会出现以下错误消息:“无法定位程序输入点 ucrtbase.terminate 于动态链接库 api-ms-win-crt-runtime-l1-1-0.dll 上”。如下图的情况,下面一起跟下载吧小编看看怎么解决Acrobat启动错误。此问题与 Office 2016 安装有...

相似回答