【发布时间】:2021-05-07 21:19:05
【问题描述】:
我正在尝试在我的第一个 C++ 项目中包含一个 3rd 方库。
这是文件结构:
代码如下:
如果我尝试编译它,我会收到以下错误:
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
launch.json
tasks.json
【问题讨论】:
-
请使用tour 并阅读How to Ask。不要发布源代码的图像,发布格式正确的代码。
-
这个
omp库是否提供了有关如何在 VSCode 中安装和使用它的说明?这些错误看起来像您没有链接到库的任何预编译二进制文件,或者将库的源文件直接包含到您的项目中。在不知道您如何设置项目的情况下很难回答您的问题。 -
没有 VS Code 特定的指令,只是代码示例。
-
@RemyLebeau:库源文件在“项目”中(实际上VSCode没有项目只是目录树),但可能在也可能不在makefile中,并且VS Code未配置为使用makefile,他总是在运行一个只编译一个文件的构建。
-
@Paolo 您在弄清楚如何与 OMP 库链接时遇到了问题。尝试从命令行编译它,直到正确为止,然后也许你会弄清楚你的 VS Code 配置是如何存在缺陷的。
标签: c++ visual-studio-code g++ vscode-settings