我正在使用 Visual Studio 2012 用 C++ 编写程序。该程序需要连接两个设备:压力传感器和控制电动平台的驱动器。当我在 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
.
我将该代码从 main 中取出,当我尝试调用时,我会遇到同样的问题。.loadTraj.
如果我尝试!StepSetParam
直接在 main 中执行,绕过类,同样的错误。
(编辑:可能不言而喻,但程序根本无法运行,因为您没有必要的设备连接到 COM 端口,但我希望有人可以通过查看来提供帮助)代码:主要 stdafx.h 驱动程序.h driver.cpp stepper.h