如果实际导出"ordinal N not found in DLL"错误,可能导致什么原因?
What could be causes of "ordinal N not found in DLL" error if it's actually exported?
我太笨了,导致GFWL被游戏拖累(而GFWL已经瘫痪)。我发现了一个名为XLiveLess的项目,该项目旨在将XLive.dll重新实现为一个存根,它只做运行游戏所需的最小工作。
当我放置了预先构建的DLL时,我得到的只是"序号29无法在动态链接库中定位"错误。因此,我运行了一个调试器来查找对该导出的调用,推导出签名,向.cpp和.def文件添加适当的代码,并构建了库。现在,在更新DLL后,我仍然会得到同样的错误,但dumpbin /exports xlive.dll
清楚地向我显示#29已导出——输出中有一行29 000024A0 [NONAME]
。
我也确信我自己构建的库正是xlive.dll游戏正在访问的——如果我删除二进制文件,它就会开始抱怨dll丢失。如果这很重要的话,我目前正在Windows 8.0 x86_64下运行。
现在我迷失了方向,感到困惑,而且我对Windows编程没有经验(大约15年前做过,但从那时起几乎忘记了一切)。是什么可能导致加载程序仍然找不到导出的函数,即使它就在那里?我是不是错过了什么?
(至于我行为的合法性,如果这些都很重要,在我居住的管辖范围内,我被明确允许出于兼容性和互操作性的目的对软件进行逆向工程。)
解决了它。
出于某种原因,我完全不知道,错误消息框中的序号对我来说是减去一。因此,当错误消息说"序号#29"时,它的意思是@30。事实上,它是缺失的,因为我本来打算一个接一个地添加导出,只添加了@29(它也缺失了,但在此之前检查了@30),并想知道为什么错误消息没有改变。
相关文章:
- 警告处理为错误这里有什么问题
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 0-1背包代码中的错误.我的代码中有什么错误
- 是什么导致了Unity 3D中的"错误线程异常"?
- 如果我这样写,我的单例类会导致什么错误
- 为什么输出不同以及此代码中有什么错误
- 我的代码中有什么错误.我尝试在类中使用数组,但出现逻辑错误
- 使用 fopen 而不是 Visual Studio 建议的 fopen_s 有什么错误
- 我的 C++11 测试表明 sort(vector<string>) 甚至比 C++03 慢,有什么错误吗?
- 这个 c++ 结构有什么错误
- 什么错误的逻辑导致我的链表的这个 push_back(..) 函数失败?
- 我的类定义中有什么错误?
- realloc C 函数的可能包装函数有什么错误?
- 什么错误无法理解
- C++:使用STL矢量时有什么错误
- 下面的代码中有什么错误,应该如何更正
- 我错过了什么?c++错误
- 这里面有什么错误?字符串赋值
- 如果将此函数放在泛型库中,会导致什么错误?
- 我做错了什么? c++错误