неопределенная ссылка на функции c в коде c ++

У меня странная проблема: код ниже прекрасно скомпилирован.
src.cpp:

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

void A::Execute() {
    B::Instance().Reset(ix);
    c_func(ix);// this is c functions declared in header.h
    C::Instance().Erase(ix);
}

Но когда я закомментирую c_funk (), я получаю ошибку компоновки во всех местах, где я использую функции c из файла header.h.

С этим небольшим изменением:

void A::Execute() {
    B::Instance().Reset(ix);
    //c_func(ix);// this is c function declared in header.h
    C::Instance().Erase(ix);
}

Я получаю: неопределенная ссылка на c_func ().
Есть идеи как это решить? Благодарю.

Обновить:
Я добавил фиктивную функцию в header.h: foo_for_linkage_problem ();
и таким образом решил проблему. Как я понимаю, компоновщик попытается сделать некоторую оптимизацию, которая решает эту проблему. новый код:

void A::Execute() {
    B::Instance().Reset(ix);
    foo_for_linkage_problem();// this is c empty function declared in header.h 
    C::Instance().Erase(ix);
}

Ответы на вопрос(1)

Ваш ответ на вопрос