我的项目中有一个文件夹组件,其中有另一个文件夹fico,其中有一个文件我想使用le_helper_stub_local.h(components - > fico - >我要使用的文件)。 然后我有另一个文件夹定位,它有两个文件夹:platform和posDaemon。我正在使用posDaemon中的文件,我想在此文件中包含le_helper_stub_local.h。
我使用了以下内容:
#include "../../ficoStub/le_helper_stub_local.h"
但是当我编译时,我有一个错误的未定义引用我在le_helper_stub_local.h中使用的函数 我究竟做错了什么?抱歉,如果它听起来像一个初学者的问题,但我真的不使用C。
le_helper_stub_local.h的代码:
#ifndef LEGATO_STUB_LOCAL_INCLUDE_GUARD
#define LEGATO_STUB_LOCAL_INCLUDE_GUARD
#include "legato.h"
FILE * Stub_openStream(char *pathIn);
void Stub_writeHeader(FILE* fp, char *functionName);
void Stub_writeParam (FILE* fp, int nParam, char *paramName, char*
paramContent);
void Stub_writeTail(FILE* fp);
bool Stub_lookForCall(FILE* fp, int *remains);
void Stub_updateRemains(FILE *fp, int remains);
le_result_t le_helper_stub_Init
(
void
);
#endif // LEGATO_STUB_LOCAL_INCLUDE_GUARD
这是我包含上述文件的代码的一部分: le_result_t le_gnss_GetDate ( le_gnss_SampleRef_t positionSampleRef, ///< [在] ///<定位样本的参考。
uint16_t* yearPtr,
///< [OUT]
///< UTC Year A.D. [e.g. 2014].
uint16_t* monthPtr,
///< [OUT]
///< UTC Month into the year [range 1...12].
uint16_t* dayPtr
///< [OUT]
///< UTC Days into the month [range 1...31].
)
{
le_result_t result = LE_FAULT;
// 1. Open the output file and add/save information related to the execution.
char pathOut[] = "/stub/positioning_le_gnss_GetDate.out";
char functionName[] = "le_gnss_GetDate";
FILE * fp = Stub_openStream(pathOut);
Stub_writeHeader(fp, functionName);
Stub_writeTail(fp);
result = le_atomFile_CloseStream(fp);
return result;
用于编译我有一个脚本,它编译我的整个项目是python和C.在这里写它太长了。这是我在complilation期间得到的错误:
posDaemon.so:对Stub_writeHeader'
build/qemuarm/system/component/6c05f6c53a95e6505773ec507f339d0a/obj/libComponent_posDaemon.so: undefined reference to
Stub_writeTail'的未定义引用
build / qemuarm / system / component / 6c05f6c53a95e6505773ec507f339d0a / obj / libComponent_posDaemon.so:对“Stub_openStream”的未定义引用
collect2:错误:ld返回1退出状态
[390/601]链接C可执行文件
我之前在其他文件中使用过le_helper_stub_local.h,但之前我从未遇到过这个问题。我现在也不认为这是一个包含问题。