gpt4 book ai didi

C++ 运行时检查失败 #0 - ESP 的值未在函数调用中正确保存

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:37 26 4
gpt4 key购买 nike

我正在尝试使用 C++ 编写 motorbee

当我运行代码时出现以下错误:

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

这是我的代码。

#include "stdafx.h"
#include <iostream>
#include "windows.h"
#include "mt.h"
using namespace std;

HINSTANCE BeeHandle= LoadLibrary("mtb.dll");
Type_InitMotoBee InitMotoBee;
Type_SetMotors SetMotors;
Type_Digital_IO Digital_IO;
void main ()
{
InitMotoBee = (Type_InitMotoBee)GetProcAddress( BeeHandle,"InitMotoBee");
SetMotors =(Type_SetMotors)GetProcAddress(BeeHandle,"SetMotors");
Digital_IO =(Type_Digital_IO)GetProcAddress(BeeHandle,"Digital_IO ");
InitMotoBee();

SetMotors(0, 50, 0, 0, 0, 0, 0, 0, 0);

}

最佳答案

您的 typedef 函数指针需要匹配 calling convention您正在使用的图书馆。例如,如果 InitMotoBee 使用 cdecl你的 typedef 看起来像:

typedef bool (__cdecl *Type_InitMotoBee)(void)

SetMotors 函数采用参数,因此也需要为此正确设置调用约定(这很可能是应用程序失败的地方)。

关于C++ 运行时检查失败 #0 - ESP 的值未在函数调用中正确保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10079625/

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