因此,在过去的 2 个小时里,我一直在努力解决这个编译器错误,并认为我会在这里发布代码,看看是否有人能解释我的错误。
我已经去掉了所有不相关的部分,留下了一个最小的程序(如下所示),据我所知,它应该可以编译和运行。如果我来了,但我看不到 main 中对 testFunc 的调用有什么问题,那么一切都会编译并运行良好。但是,通过调用 testFunc ,我得到以下信息:
$ ./waf -v --run abr-tool
Waf: Entering directory `/home/conor/workspace/msc/AdaptiveIPTV/Software/conor/ns3/ns-3.15/build'
[1665/1822] cxxprogram: build/src/abr-tools/examples/abr-tool.cc.4.o -> build/src/abr-tools/ns3.15-abr-tool-debug
19:04:19 runner ['/usr/bin/g++', '-L/usr/lib', '-lboost_iostreams', '-L/usr/lib', '-lboost_iostreams', '-pthread', 'src/abr-tools/examples/abr-tool.cc.4.o', '-o', '/home/conor/workspace/msc/AdaptiveIPTV/Software/conor/ns3/ns-3.15/build/src/abr-tools/ns3.15-abr-tool-debug', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-Wl,--no-as-needed', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-lns3.15-point-to-point-debug', '-lns3.15-internet-debug', '-lns3.15-mpi-debug', '-lns3.15-bridge-debug', '-lns3.15-network-debug', '-lns3.15-core-debug', '-lrt']
src/abr-tools/examples/abr-tool.cc.4.o: In function `main':
/home/conor/workspace/msc/AdaptiveIPTV/Software/conor/ns3/ns-3.15/build/../src/abr-tools/examples/abr-tool.cc:7: undefined reference to `testFunc()'
collect2: ld returned 1 exit status
正如您所看到的,下面的代码是作为一个更大的项目的一部分构建的,我知道错误可能来自构建过程,而不是我的代码问题,但无论哪种方式,我都遇到了障碍在我对这里发生的事情的理解中。我边走边学 c++,说实话,我觉得自己没有足够的经验,甚至无法自己编译这段代码,并且能够说“那肯定可以工作,但它不行”,这就是为什么我像这样呈现它。
可能相关的另外几点:
我可以使用 abr-tools.cc 中 abr-helper.h 中定义的宏,当我将 abr-tools.cc 放在与 abr-helper.h 相同的文件夹中并仅使用 '#include "abr-helper 时,问题仍然存在。H”'。
最初的错误是一样的,但是对于 abr-helper.h 中定义并在 abr-tools.cc 中使用的一堆其他东西
我将不胜感激你们可以提供的任何帮助,在此先感谢。
abr-helper.h:
#ifndef ABR_HELPER_H
#define ABR_HELPER_H
#include <iostream>
void testFunc();
#endif /* ABR_HELPER_H */
abr-helper.cc:
#include <iostream>
#include "abr-helper.h"
void testFunc(){
std::cout << "this is all testFunc() does ..." << std::endl;
}
abr-tool.cc:
#include <iostream>
#include "ns3/abr-helper.h"
int main (int argc, char *argv[]){
std::cout << "in main()" << std::endl;
testFunc();
return 0;
}