我正在尝试使用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/