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

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



这是我的代码。

#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/

10-11 16:19