Visual Studio 2012 を使用して C++ でプログラムを作成しています。このプログラムには、圧力センサーと電動プラットフォームを制御するドライバーの 2 つのデバイスを接続する必要があります。すべてのドライバー コードを main に記述したところ、プログラムは正常に動作しました。モーターが動き、圧力センサーが値を示しました。ただし、プログラムを単純化し、オブジェクト/クラスを適用して、よりすっきりと管理しやすくしたいと考えていました。私は .lib と .dll ファイルを使用していますが、何らかの理由でオブジェクトを使い始めたとき、プログラムはオブジェクトから関数を呼び出すことを好みませんでした。
これは私が得るエラーです:
"Unhandled exception at 0x1000AAD2 (Ldcnlib.dll) in motors.exe: 0xC0000005: Access violation writing location 0x00000025."
多分私は#includes
間違っていると思いますか?しかし、私はそれを理解することはできません。誰かが見たい場合は、プロジェクト フォルダーMotors.rarで提供しました。その場合、プログラムはまで実行されます
if((!driverA.setParameter()) || (!driverB.setParameter()) || (!driverC.setParameter()))
メインで。デバッグ中、問題が正確に発生していることがわかりました
int Driver::setParameter(){
if(!StepSetParam(PicoAddr, Mode, MinSpeed, RunCurrent, HldCurrent, ADLimit, EmAcc))
return 0;
}
でdriver.cpp
。
私はそのコードをメインから取り出しましたが、クラスをバイパスしてメインで直接.loadTraj.
実行しようとすると、同じエラーが発生します。!StepSetParam
(編集: 言うまでもありませんが、必要なデバイスが COM ポートに接続されていないため、プログラムはまったく動作しませんが、誰かが見ただけで助けてくれることを願っています) コード:メイン stdafx.h ドライバー.h ドライバー.cpp ステッパー.h