Visual c++ 32位&;的修饰名称;同一DLL的64位版本

Visual c++ 32位&;的修饰名称;同一DLL的64位版本,visual-c++,dll,shared-libraries,dllimport,dllexport,Visual C++,Dll,Shared Libraries,Dllimport,Dllexport,我在VS2013上使用VC++。 我得到了一个32位版本的DLL“ABC.DLL”,它公开了诸如Apple()、Bananna()等函数。。 在我的应用程序App.EXE代码中使用这些函数指针时,我确实使用 LoadLibrary("ABC.DLL"); GetProcAddress(DllHandler,"Apple@4"); GetProcAddress(DllHandler,"Bananna@8"); 等等 我知道这些是装饰过的名字 我没有ABC.DLL的源代码 现在,如果我在64位版

我在VS2013上使用VC++。 我得到了一个32位版本的DLL“ABC.DLL”,它公开了诸如Apple()、Bananna()等函数。。 在我的应用程序App.EXE代码中使用这些函数指针时,我确实使用

LoadLibrary("ABC.DLL");
GetProcAddress(DllHandler,"Apple@4");
GetProcAddress(DllHandler,"Bananna@8"); 
等等

我知道这些是装饰过的名字

我没有ABC.DLL的源代码

现在,如果我在64位版本的App.EXE代码中使用64位版本的ABC.DLL, 同样的方法(上面使用的GetProcAddress),我从使用的每个GetProcAddress()中获取“NULL”作为返回值。 但是LoadLibrary(“ABC.DLL”)成功了

现在我想知道32位ABC.DLL和64位ABC.DLL的修饰名称是否不同?
我们怎么知道?详细信息可能会有所帮助。

依赖项查询器或转储文件会说什么?使用依赖项查询器如何查看DLL导出的函数?我以为dependency walker只是用来查看依赖项列表的?如果我错了,请纠正我。ThanksDependence walker还显示导出的函数名,并且可以选择删除装饰。当你在一个DLL上启动它时,只需在右边的中间面板上查看。64位代码只有一个调用约定。因此,没有必要装饰出口名称,它将是简单的“苹果”而不是“苹果”_Apple@4". 你必须自定义你的代码来解释这一点。当然不健康。从dumpbin.exe/exports获取另一个意见,它不再适合此任务。