だから、私は過去 2 時間、このコンパイラ エラーに頭を悩ませていたので、ここにコードを投稿して、誰かが私の間違いに光を当てることができるかどうかを確認しようと考えました。
無関係なビットをすべて取り除いて、最小限のプログラム (以下に示す) を残しました。これは、私が見る限り、コンパイルして実行する必要があります。私が来ても、メインの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;
}