首页 文章

openann c编译失败[关闭]

提问于
浏览
-1

我在使用OpenANN编译一些c代码时遇到问题 . 我想知道你是否可以帮助我,这里是make的日志:log

我为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

1 回答

  • 2

    您的编译命令是错误的 .

    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

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

    • -L 表示在查找库时考虑目录

    • -l 表示与此库链接

    如果你仔细查看你传递的 OpenANN 标志,你会发现你指示 g++ 在搜索库时也会查看 /usr/include/OpenANN 目录,但实际上并没有指示它链接到 OpenANN 库 .

    如果未指示 g++ 将程序/库与 OpenANN 库链接,则不会,并且您将获得未定义的符号 .

相关问题