gpt4 book ai didi

c++ - 如何调用 DLL API

转载 作者:行者123 更新时间:2023-11-30 02:00:01 26 4
gpt4 key购买 nike

我正在尝试用 VC++ 版本 8 编写一个应用程序。我有一个 DLL,使用 dependency walker 我得到了 DLL 可用的 API 列表。

我能够加载 DLL。但是当我尝试调用 DLL 中的一些 API 时,我会得到这个调试错误

“运行时检查失败 #0 - ESP 的值未在函数调用中正确保存。这通常是调用以一种调用约定声明的函数和以不同调用约定声明的函数指针的结果。 "

typedef void ( WINAPI *RECEIVE_CALLBACK)int*, int );

typedef void (WINAPI *MYPROC)(RECEIVE_CALLBACK);

.....
.....

handleDll = LoadLibraryW((LPCWSTR)L"Example.dll");

ProcAdd = (MYPROC) GetProcAddress(handleDll, "_DLLAPI_Call1@8");

(ProcAdd) ( (RECEIVE_CALLBACK) ReceiveFunc);

当执行最后一行时,出现上述错误。可能是什么原因?

最佳答案

您的 MYPROC 函数指针声明是错误的。这个函数有两个参数,而不是一个。您可以从名称的 @8 部分看出,它表示参数值需要 8 个字节的堆栈空间。用一个参数调用它,一个 4 字节的指针,总是会使堆栈不平衡。

您需要修复 MYPROC 声明。

关于c++ - 如何调用 DLL API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15569272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com