Error compiling (code for RRC protocol)

Hi everyone,
I am write code for rrc protocol
When I compile code I get an error,
I would love if anyone knows how to solve this problem.

The code I wrote:

#include “protocol/NR_MIB.h”
#include “lib/message_type.hpp”
#include “protocol/asn_application.h”
#include “protocol/asn_internal.h”
#include “asn1.hpp”
#include
#include
#include
#include
#include “protocol/per_encoder.h”
#include “encode.hpp”

using namespace std;

int main() {

auto *pdu = asn::New<RrcBcchBchMes>();
pdu ->  message.present     =   NR_BCCH_BCH_MessageType_PR_mib;
pdu ->  message.choice.mib  =   asn::New<NR_MIB>();




bool barred = false;
bool intraFreqReselectAllowed = false;

auto &mib = *pdu    ->  message.choice.mib;
mib.ssb_SubcarrierOffset = 0;
mib.subCarrierSpacingCommon = NR_MIB__subCarrierSpacingCommon_scs15or60;
mib.dmrs_TypeA_Position = NR_MIB__dmrs_TypeA_Position_pos2;
mib.cellBarred = barred ? NR_MIB__cellBarred_barred
                        : NR_MIB__cellBarred_notBarred ;
mib.intraFreqReselection = intraFreqReselectAllowed ? 
                            NR_MIB__intraFreqReselection_allowed
                            : NR_MIB__intraFreqReselection_notAllowed;


mib.pdcch_ConfigSIB1.controlResourceSetZero = 1;
mib.pdcch_ConfigSIB1.searchSpaceZero = 1;


auto sfn = mib.systemFrameNumber;
auto spa = mib.spare;
asn::SetForBitString<6>(15,sfn);
asn::SetForBitString<1>(1, spa);

uint8_t * pdu_tmp = (uint8_t *)pdu;

for (int i = 0; i < 150; i++)
{
    cout << i << ":: " << bitset<8>((*(pdu_tmp+i) )) << endl;
}


asn_enc_rval_t enc_ravl;
uint8_t *M;

enc_ravl = uper_encode_to_buffer(&asn_DEF_NR_BCCH_BCH_Message, NULL,
                                    (void *) pdu,
                                    M,
                                    24);

}

Error:
g++ brodcast0.1.cpp -o br -I protocol/
/tmp/ccd4aK87.o: In function main': brodcast0.1.cpp:(.text+0x343): undefined reference to uper_encode_to_buffer’
collect2: error: ld returned 1 exit status

thank you!