Я включил некоторые функции C с внешней связью 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, я не вижу внешних функций (fnA, fnB) в libMod-O.a, даже если Y.cpp компилируется во время сборки libMod-O.a. В результате возникает ошибка компоновщика, так как другой модуль использует fnA, fnB.
Я не вижу связи между включенными внешними функциями fnA и fnB и использованием class test в Mod.cpp. Ожидается ли это или есть лучший способ определить это?