DLL的外部函数地址不正确

时间:2019-08-19 23:57:01

标签: c++ visual-studio dll linker function-call

我正在研究具有多个dll项目的Visual Studio解决方案。特别是一个项目,无论是在Windows 7还是Windows 10上编译,都无法在Windows 7上运行时调用外部函数。在Windows 10上编译并运行代码后,它可以正常工作。没有编译时错误或警告。

当我获得.exe项目或另一个.dll项目中函数的地址时,我拥有了我所期望的信息,但是在此特定项目中调用该信息时,它会丢失。

例如HeapCreate,在正确运行的代码中,它看起来像kernel32.dll!0x773649 但在错误的.dll中,它是0x00024692

对dll外部的任何函数(无论是标准库还是其他项目)的调用都会导致访问冲突或调用某些完全不相关的函数并崩溃。

我已经检查了项目设置,发现它与正确运行的代码之间没有区别。我尝试使用2017和2019 Platform Toolset以及SDK 10.0.15063.0和10.0.17763.0进行编译,唯一的不同之处在于,如果不首先崩溃,就会导致调用不正确的函数。

0 个答案:

没有答案