加载库失败,错误代码为 127
本文关键字:错误代码 失败 加载 | 更新日期: 2023-09-27 18:19:32
我有一个非常有趣的问题。这听起来很容易,但我没有提供任何关于它的信息。
我有一个带有 excel 加载项和 winforms 应用程序和库项目的 C# 解决方案,只有一种方法。
带有库的项目有下一个代码:
[DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi)]
public static extern IntPtr LoadLibrary(string filename);
public sealed class LibraryInfo
{
public readonly IntPtr Handle;
public LibraryInfo(string dllName)
{
Handle = LoadLibrary(dllName);
}
}
public LibraryInfo GetLib(string name)
{
return new LibraryInfo(name);
}
看起来很简单。所以我从加载项和 WinForms 调用了该方法
我有一个 Dll,为 x64 平台和 x86 平台构建。
现在魔术:仅当我从加载项和 x64 配置以及 excel-2016(当然是 x64(运行它时,LoadLibrary 才会返回错误代码 127。当我在 x86 或 winform (x86 和 x64(上运行它时,它可以工作。这还不是全部,当我在 Excel 2013 上运行它时,它也可以正常工作!!
有人知道吗?
错误代码127
ERROR_PROC_NOT_FOUND
。
找不到指定的过程。
通常,这意味着某些东西正在调用GetProcAddress
失败,因为有问题的模块没有导出指定名称的函数。
您提供的代码中无法辨别出发生这种情况的确切位置。不幸的是,您没有提供太多代码,也没有提供您正在使用的代码。尽管您的问题中的代码没有执行错误检查,但您提到了错误代码,这一事实可以看出这一点。
可能是您未显示的代码正在调用GetProcAddress
并失败。或者可能是加载程序在解析您加载的库的依赖项时生成该错误代码。
所以,我上面所说的是对你报告的行为的广泛解释。任何更具体的内容都需要使用的实际代码,但只有您拥有该代码。
问题解决了。
我有一个依赖的dll,称为"图表",所以excel 2016有"chart.dll",2013 - 不是。解决方案是重命名我的"图表.dll"并重建两个 dll。