Я включил некоторые функции C со связью extern c в коде c ++. Например.
// File Y.cpp:
extern C {
void fnA(void) { }
void fnB(void* a, void* b) { }
}
class test {
....
};
// end of file
Файл Y находится в модуле Mod. При сборке библиотеки libMod-O.a для модуля Mod я не вижу включенных функций в блоке extern, если только Y.h не включен в какой-то другой файл (Mod.cpp) и не используется тест класса. Поэтому, если я не создаю объект тестового класса в Mod.cpp, я не вижу функции extern (fnA, fnB) в libMod-O.a, даже если Y.cpp компилируется во время сборки libMod-O.a. В результате возникает ошибка компоновщика, так как другой модуль использует fnA, fnB.
Я не вижу связи между внешними функциями fnA и fnB и использованием теста класса в Mod.cpp. Это ожидается или есть лучший способ определить это?