OpenAN C++编译失败 我在用OpenANN编译一些C++代码时遇到了问题。 我想知道你是否能帮我,这是make的日志:

OpenAN C++编译失败 我在用OpenANN编译一些C++代码时遇到了问题。 我想知道你是否能帮我,这是make的日志: ,c++,c++11,compiler-errors,g++,C++,C++11,Compiler Errors,G++,我已经为OpenANN安装了依赖项 链接错误: g++ -std=c++11 -O3 main.cpp -I/usr/include/eigen3 -L/usr/include/OpenANN -L/usr/lib -lutil -lboost_system -lboost_filesystem -lboost_iostreams -o Bot.out: /tmp/cc78iiwc.o: dans la fonction « Brain::ComputeTarget(Brain::MemC

我已经为OpenANN安装了依赖项

链接错误:

g++ -std=c++11 -O3 main.cpp -I/usr/include/eigen3 -L/usr/include/OpenANN -L/usr/lib -lutil -lboost_system -lboost_filesystem -lboost_iostreams -o Bot.out: /tmp/cc78iiwc.o: dans la fonction « Brain::ComputeTarget(Brain::MemCell const&) »: main.cpp:(.text._ZN5Brain13ComputeTargetERKNS_7MemCellE[_ZN5Brain13ComputeTargetERKNS_7MemCellE]+0xa7): référence indéfinie vers « OpenANN::Net::operator()(Eigen::Matrix const&) » main.cpp:(.text._ZN5Brain13ComputeTargetERKNS_7MemCellE[_ZN5Brain13ComputeTargetERKNS_7MemCellE]+0x18d): référence indéfinie vers « OpenANN::Net::operator()(Eigen::Matrix const&) » /tmp/cc78iiwc.o: dans la fonction « main »: main.cpp:(.text.startup+0x2cf): référence indéfinie vers « OpenANN::Net::operator()(Eigen::Matrix const&) » main.cpp:(.text.startup+0xa16): référence indéfinie vers « OpenANN::DirectStorageDataSet::DirectStorageDataSet(Eigen::Matrix*, Eigen::Matrix*, OpenANN::Evaluator*) » main.cpp:(.text.startup+0xa2f): référence indéfinie vers « OpenANN::Learner::trainingSet(OpenANN::DataSet&) » main.cpp:(.text.startup+0xa3c): référence indéfinie vers « OpenANN::StoppingCriteria::StoppingCriteria() » main.cpp:(.text.startup+0xa8d): référence indéfinie vers « OpenANN::train(OpenANN::Net&, std::string, OpenANN::ErrorFunction, OpenANN::StoppingCriteria const&, bool, bool) » main.cpp:(.text.startup+0xbf4): référence indéfinie vers « OpenANN::Net::save(std::string const&) » main.cpp:(.text.startup+0xfd5): référence indéfinie vers « OpenANN::Net::operator()(Eigen::Matrix const&) » main.cpp:(.text.startup+0x1064): référence indéfinie vers « OpenANN::Net::operator()(Eigen::Matrix const&) » main.cpp:(.text.startup+0x11f6): référence indéfinie vers « OpenANN::DirectStorageDataSet::DirectStorageDataSet(Eigen::Matrix*, Eigen::Matrix*, OpenANN::Evaluator*) » main.cpp:(.text.startup+0x120f): référence indéfinie vers « OpenANN::Learner::trainingSet(OpenANN::DataSet&) » main.cpp:(.text.startup+0x121c): référence indéfinie vers « OpenANN::StoppingCriteria::StoppingCriteria() » main.cpp:(.text.startup+0x126d): référence indéfinie vers « OpenANN::train(OpenANN::Net&, std::string, OpenANN::ErrorFunction, OpenANN::StoppingCriteria const&, bool, bool) » main.cpp:(.text.startup+0x15f6): référence indéfinie vers « OpenANN::DirectStorageDataSet::DirectStorageDataSet(Eigen::Matrix*, Eigen::Matrix*, OpenANN::Evaluator*) » main.cpp:(.text.startup+0x160f): référence indéfinie vers « OpenANN::Learner::trainingSet(OpenANN::DataSet&) » main.cpp:(.text.startup+0x161c): référence indéfinie vers « OpenANN::StoppingCriteria::StoppingCriteria() » main.cpp:(.text.startup+0x166d): référence indéfinie vers « OpenANN::train(OpenANN::Net&, std::string, OpenANN::ErrorFunction, OpenANN::StoppingCriteria const&, bool, bool) » main.cpp:(.text.startup+0x1900): référence indéfinie vers « OpenANN::Net::~Net() » /tmp/cc78iiwc.o: dans la fonction « Brain::Brain() »: main.cpp:(.text._ZN5BrainC2Ev[_ZN5BrainC5Ev]+0x37): référence indéfinie vers « OpenANN::Net::Net() » main.cpp:(.text._ZN5BrainC2Ev[_ZN5BrainC5Ev]+0x58): référence indéfinie vers « OpenANN::Net::load(std::string const&) » main.cpp:(.text._ZN5BrainC2Ev[_ZN5BrainC5Ev]+0x115): référence indéfinie vers « OpenANN::Net::inputLayer(int, int, int) » main.cpp:(.text._ZN5BrainC2Ev[_ZN5BrainC5Ev]+0x134): référence indéfinie vers « OpenANN::Net::fullyConnectedLayer(int, OpenANN::ActivationFunction, double, bool) » main.cpp:(.text._ZN5BrainC2Ev[_ZN5BrainC5Ev]+0x153): référence indéfinie vers « OpenANN::Net::outputLayer(int, OpenANN::ActivationFunction, double, bool) » main.cpp:(.text._ZN5BrainC2Ev[_ZN5BrainC5Ev]+0x16d): référence indéfinie vers « OpenANN::Net::~Net() » collect2: erreur: ld a retourné 1 code d'état d'exécution Makefile:6 : la recette pour la cible « test » a échouée make: *** [test] Erreur 1
您的编译命令错误

链接选项-L和-L有两个不同的角色:

-L意味着在查找库时考虑目录 -我想和这个图书馆联系 如果您仔细查看您传递的有关OpenANN的标志,您会意识到您指示g++在搜索库时也要查看/usr/include/OpenANN目录,但从来没有实际指示它链接OpenANN库


如果g++未被指示将程序/库与OpenANN库链接,则不会链接,您将得到未定义的符号。

这些不是真正的编译器错误,而是链接器错误,他们说您缺少OpenANN库中的许多符号,可能是因为您没有链接它。至少我在猜测,因为我不读法语,我想是的,这里很少有人读法语。请更改区域设置,以便将来在发布问题时获得英语输出。@JoachimPileborg:我确认它是法语的,并且确实缺少对已翻译内容的引用。
g++ -std=c++11 -O3  main.cpp  -I/usr/include/eigen3 -L/usr/include/OpenANN \
    -L/usr/lib -lutil -lboost_system -lboost_filesystem -lboost_iostreams -o Bot.out