undefined reference to `open_can'

Viewed 51

I have to implement a simple c++ code, given an external library written in c. I am not able to use the functions that are in the library due to the following error:

/usr/bin/ld: /tmp/ccIpTi43.o: in function `main':
main.cpp:(.text+0x42): undefined reference to `given_function`'
collect2: error: ld returned 1 exit status

Here is my file main.cpp

#include <stdio.h>
#include <iostream>
using namespace std;

extern "C"{
    #include "fake_receiver.h"
}

int main(){
    int i = given_function("file.log");

    cout << "Success " << i << endl;

    return 0;
}

Note: the file exists in the repo and has data written in ti Then, the fake_receiver.h:

#pragma once

#define MAX_CAN_MESSAGE_SIZE 20

int given_function(const char* filepath);

And the fake_receiver.c file itself:

#include "fake_receiver.h"

#include <time.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

static int current_line_count = 0;
static int next_start_stop = 50;
static int start_or_stop = 0;
static int line_count = 0;
static int opened = 0;
static FILE* can = NULL;

int given_function(const char* filepath){
    if(opened == 1)
        return -1;

    can = fopen(filepath, "r");

    if(can == NULL)
        return -1;
    srand(time(NULL));
    opened = 1;

    char c;
    while((c = fgetc(can)) != EOF){
        if(c == '\n'){
            line_count ++;
        }
    }
    fseek(can, 0, SEEK_SET);

    return 0;
}

I am new to c++ programming, so I don't really know how to solve this and make the function work properly. If you know, please help me

0 Answers
Related