У меня есть mylib.lib:
//mylib.h:
int foo();
//mylib.cpp:
#include "mylib.h"
const int arr[] = {1, 2};
int foo() {
return arr[0];
}
И proxylib.lib:
//proxylib.h:
int bla1();
int bla2();
//proxylib.cpp:
#include "../mylib/mylib.h"#include "proxylib.h"
int bla1() {
return 2;
}
int bla2() {
return foo();
}
и exe-проект:
//main.cpp
#include "../proxylib/proxylib.h"#include <iostream>
int main() {
std::cout << bla1();
return 0;
}
Основной проект имеет ссылку на проект proxylib.lib, а проект proxylib имеет ссылку на проект mylib.lib.
После компиляции и связывания проекта с финальным exe-файлом я получил неиспользуемую глобальную переменную «arr» из mylib.lib в exe, хотя функции «foo» в exe нет. ЗАЧЕМ ?
Спасибо !
main.cpp вызывает bla1 (), объявленный в proxlib.h. Proxlib.h включает mylib.h, функции которого определены в mylib.cpp, так что это тоже компилируется.
Других решений пока нет …