私は Visual C++ の初心者です... 現在取り組んでいるプロジェクトは、VC++ を使用して Digibee から受け入れた入力のログを作成することです。
Digibee に関する情報: http://www.pc-control.co.uk/digibee_info.htmマニュアルには、DLL のロード、関数の呼び出しなどに必要なコードが含まれています。
コードは、いくつかの機能に対して (いくつかの変更を加えて) 正常に動作しているようです....問題は次のとおりです。
Init() - パラメーターを受け入れませんが、コーディングするときは、パラメーターを渡して機能させる必要があります。私は0を渡します
ReadAnalogueInputs() - 4 つのパラメーターを受け入れる必要がありますが、4 つを渡すと、引数が多すぎると表示されます。one..builds を渡すと正常に動作しますが、System.AccessViolation 例外が発生します。
私を助けてください!
// Header file for use with dgb.dll
typedef bool (*Type_InitDgb)();
typedef bool (*Type_ReadInputs)(int *inputs);
typedef bool (*Type_SetOutputs)(int outputs);
typedef bool (*Type_ReadAnalogueInputs)(int *aip1, int *aip2, int *aip3, int *aip4);
typedef bool (*Type_SetSensitivity)(int sensitivity);
//ソースファイル
private: System::Void btn_Click(System::Object^ sender, System::EventArgs^ e) {
HINSTANCE DgbHandle = LoadLibrary(TEXT("dgb.dll"));
if (DgbHandle==NULL)
btn->Text="Error";
else
{
btn->Text="Initialized";
this->progressBar1->Value=100;
}
textBox1->Text="Obtaining pointers\n";
TypeInitDgb InitDgb;
TypeSetOutputs SetOutputs;
TypeReadInputs ReadInputs;
TypeReadAnalogueInputs ReadAnalogueInputs;
TypeSetSensitivity SetSensitivity;
InitDgb = (TypeInitDgb)GetProcAddress(HMODULE(DgbHandle),"InitDgb");
SetOutputs = (TypeSetOutputs)GetProcAddress(HMODULE(DgbHandle),"SetOutputs");
ReadInputs = (TypeReadInputs)GetProcAddress(HMODULE(DgbHandle),"ReadInputs");
ReadAnalogueInputs = (TypeReadAnalogueInputs)GetProcAddress(HMODULE(DgbHandle),"ReadAnalogueInputs");
SetSensitivity = (TypeSetSensitivity)GetProcAddress(HMODULE(DgbHandle),"SetSensitivity");
this->progressBar2->Value=100;
textBox1->Text="Pointers obtained";
status=InitDgb(0);
if(status==1)
{
textBox1->Text="Digibee initialized";
this->progressBar3->Value=100;
SetOutputs(LPCTSTR(0x0001));
//SetOutputs(LPCSTR(15));
}
int a1,a2,a3,a4;
ReadAnalogueInputs(LPCTSTR(&a1));
}