1

Motor-Beeと呼ばれるデバイスを介して、 C++ を使用してモーターを制御しようとしています。

これは私が使用しているコードです:

#include <iostream.h>
#include <mt.h>
#include <windows.h>
#pragma hdrstop


int _tmain(int argc, _TCHAR* argv[])
{

HINSTANCE HStpDll; // declaration of variable to hold the handle to the dll
HStpDll = LoadLibrary( _T("mtb.dll")); // load the dll into memory and return handle


Type_InitMotoBee InitMotoBee;
Type_SetMotors SetMotors;

InitMotoBee = (Type_InitMotoBee)GetProcAddress( HStpDll, " InitMotoBee");

SetMotors =(Type_SetMotors)GetProcAddress(HStpDll, " SetMotors");


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

return 0;
}

mt.h と mtb.dll は、デバイスに付属のファイルです。

プログラムを実行しようとすると、次のようなポップアップ ボックスが表示されます。

「Project2.exe は、メッセージ「アドレス 00000000 でのアクセス違反。アドレス 00000000 の読み取り」で例外 classEAccessViolation を発生させました。プロセスが停止しました。続行するには、ステップまたは実行を使用してください。」

C++ 関数に関する情報が記載された PDF マニュアルは、ここにあります

誰かが私が間違っていることを教えてもらえますか? または、可能であればそれを解決する方法を教えてください。

4

1 に答える 1

4

呼び出しの関数名の前にスペースがありますGetProcAddress()が、これは非常に間違っているようです。

また、返されたポインターを使用する前に有効性をチェックしていないため、ルックアップが失敗するとクラッシュします。

于 2013-08-16T13:22:42.987 に答える