微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 C++ 项目中的 VS 代码中包含 3rd 方库

如何解决在 C++ 项目中的 VS 代码中包含 3rd 方库

我正在尝试在我的第一个 C++ 项目中包含一个 3rd 方库。

这是文件结构:

image

代码如下:

image

如果我尝试编译它,我会收到以下错误

Starting build... /usr/bin/g++ -g /home/?/projects/c++/test.cpp -o /home/?/projects/c++/test
 /usr/bin/ld: /tmp/cci5qRjP.o: in function `main': /home/?/projects/c++/test.cpp:7: undefined reference to `omp::HandEvaluator::HandEvaluator()'
 /usr/bin/ld: /tmp/cci5qRjP.o: in function `omp::Hand::Hand(unsigned int)': /home/?/projects/c++/include/OMPEval/omp/Hand.h:49: undefined reference to `omp::Hand::CARDS'
 /usr/bin/ld: /tmp/cci5qRjP.o: in function `omp::Hand::empty()': /home/?/projects/c++/include/OMPEval/omp/Hand.h:114: undefined reference to `omp::Hand::EMPTY'
 /usr/bin/ld: /tmp/cci5qRjP.o: in function `omp::HandEvaluator::perfHash(unsigned int)': /home/?/projects/c++/include/OMPEval/omp/HandEvaluator.h:39: undefined reference to `omp::HandEvaluator::PERF_HASH_ROW_OFFSETS'
 /usr/bin/ld: /tmp/cci5qRjP.o: in function `unsigned short omp::HandEvaluator::evaluate<true>(omp::Hand const&) const': /home/?/projects/c++/include/OMPEval/omp/HandEvaluator.h:27: undefined reference to `omp::HandEvaluator::LOOKUP'
 /usr/bin/ld: /home/?/projects/c++/include/OMPEval/omp/HandEvaluator.h:31: undefined reference to `omp::HandEvaluator::FLUSH_LOOKUP'
 collect2: error: ld returned 1 exit status

Build finished with error(s). The terminal process Failed to launch (exit code: -1).

Terminal will be reused by tasks,press any key to close it.

代码用于 library 的文档。

c_cpp_properties.json

image

launch.json

image

tasks.json

image

解决方法

无论tasks.json 来自哪里,它都不适用于包含多个源文件的复杂项目。它只编译并尝试链接单个 .cpp 文件;当有多个应该一起工作的 .cpp 文件时,这注定会失败。

您的项目目录中有一个名为 Makefile 的文件...更新 tasks.json 以运行 make 并让 make 运行编译器和链接器将是一个好的开始...但您应该还希望在每次向项目添加新文件时修改 Makefile。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。