C++ Undefined reference 未定义引用问题解决

今天在配置OpenEXR的过程中,遇到了在按照说明安装配置好后,在CLion project中无法正常引用的问题:

CMakeFiles/picc_test.dir/main.cpp.o:在函数‘main’中:
/home/roger/CLionProjects/picc_test/main.cpp:15:对‘Imf_2_3::globalThreadCount()’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:15:对‘Imf_2_3::RgbaInputFile::RgbaInputFile(char const, int)’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:17:对‘Imf_2_3::RgbaInputFile::dataWindow() const’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:25:对‘Imf_2_3::RgbaInputFile::setFrameBuffer(Imf_2_3::Rgba
, unsigned long, unsigned long)’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:26:对‘Imf_2_3::RgbaInputFile::readPixels(int, int)’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:29:对‘Imf_2_3::globalThreadCount()’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:29:对‘Imf_2_3::RgbaInputFile::RgbaInputFile(char const, int)’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:31:对‘Imf_2_3::RgbaInputFile::dataWindow() const’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:39:对‘Imf_2_3::RgbaInputFile::setFrameBuffer(Imf_2_3::Rgba
, unsigned long, unsigned long)’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:40:对‘Imf_2_3::RgbaInputFile::readPixels(int, int)’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:29:对‘Imf_2_3::RgbaInputFile::~RgbaInputFile()’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:15:对‘Imf_2_3::RgbaInputFile::~RgbaInputFile()’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:29:对‘Imf_2_3::RgbaInputFile::~RgbaInputFile()’未定义的引用
/home/roger/CLionProjects/picc_test/main.cpp:15:对‘Imf_2_3::RgbaInputFile::~RgbaInputFile()’未定义的引用

这样子的报错,在谷歌和百度上搜索都没有给出一个可行的方案,在看OpenEXR的README.md中的最后一句看到它是支持使用pkg-config包进行管理的,所以可以通过pkg-config搜寻OpenEXR编译需要的包的flags然后将这些包的flags添加到CLion中的CMakeLists.txt中即可,具体的操作是:

pkg-config --libs OpenEXR
输出是:-L/usr/local/lib -lIlmImf -lImath -lHalf -lIex -lIexMath -lIlmThread -pthread
所以我们在CMakeLists.txt中添加:

set(OpenEXRLinkers -lIlmImf -lImath -lHalf -lIex -lIexMath -lIlmThread -pthread)
target_link_libraries( YOUR_PROJECT_NAME ${OpenEXRLinkers} )

再次编译即通过,没有其它问题出现。

你可能感兴趣的:(C++ Undefined reference 未定义引用问题解决)