-2

我有 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 后,我从 exe 中的 mylib.lib 中获得了未使用的全局变量“arr”,即使函数“foo”不在 exe 中。为什么 ?

谢谢 !

4

1 回答 1

0

main.cpp 调用在 proxlib.h 中声明的 bla1()。Proxlib.h 包括 mylib.h,它具有在 mylib.cpp 中定义的功能,因此它也被编译。

于 2016-03-09T20:50:21.097 回答