Я относительно новичок в C ++, но пришел из Python и C.
Я использую SDK для лидарного датчика. У меня есть 5 основных файлов, которые участвуют; SDK.h
, SDK.cpp
, setup.h
, setup.cpp
и main.cpp
.
Класс определен в SDK.
rplidar.h
class RPlidarDriver{
public:
static RPlidarDriver * CreateDriver(_u32 drivertype = DRIVER_TYPE_SERIALPORT);
// more code
}
main.cpp
#include <iostream>
#include "rplidar.h"
#include "setup.h"
using namespace std;
using namespace rp::standalone::rplidar;
int main()
{
//code
RPlidarDriver* lidar = RPlidarDriver::CreateDriver(DRIVER_TYPE_SERIALPORT);
start_reading(lidar, scanMode);
//code
}
setup.cpp
#include "setup.h"
#include "rplidar.h"
using namespace std;
using namespace rp::standalone::rplidar;
void start_reading(RPlidarDriver* driver, const char* scanMode)
{
//start motor
driver->startMotor();
//more code...
}
setup.h
#include "rplidar.h"
using namespace rp::standalone::rplidar;
namespace setup
{
void start_reading(RPlidarDriver* driver, const char* scanMode);
}
Однако я получаю эту ошибку
main.obj: ошибка LNK2019: неразрешенный внешний символ «void __cdecl setup :: start_reading (класс rp :: standalone :: rplidar :: RPlidarDriver *, char const *)» (? Start_reading @ setup @@ YAXPAVRPlidarDriver @ rplidar @ standalone @ rp @@ PBD @ Z) в функции _main
Я также получаю ту же ошибку для других функций, которые я пытаюсь использовать объект в качестве параметра.
Если я поместил функцию в setup.cpp
в main.cpp
, она легко компилируется. Я попытался реализовать &
и использовать вместо этого параметр в качестве ссылки, но не удача.