Visual Studio C ++ связывает неиспользуемые глобальные переменные

У меня есть 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 нет. ЗАЧЕМ ?

Спасибо !

-2

Решение

main.cpp вызывает bla1 (), объявленный в proxlib.h. Proxlib.h включает mylib.h, функции которого определены в mylib.cpp, так что это тоже компилируется.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]