为啥在将 liblas 链接到 Qt 后出现未定义的参考错误?
Posted
技术标签:
【中文标题】为啥在将 liblas 链接到 Qt 后出现未定义的参考错误?【英文标题】:Why i am in getting undefined refrence error after linking liblas to Qt?为什么在将 liblas 链接到 Qt 后出现未定义的参考错误? 【发布时间】:2017-10-06 07:35:15 【问题描述】:我正在尝试将 liblas 库链接到 Qt。我正在使用 .pro 文件中的以下代码来链接它。
//////////////code to link liblas to Qt/////////////////////////////////
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../OSGeo4W/lib/ -lliblas
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../OSGeo4W/lib/ -lliblas
else:unix: LIBS += -L$$PWD/../../../../OSGeo4W/lib/ -lliblas
INCLUDEPATH += $$PWD/../../../../OSGeo4W/include
DEPENDPATH += $$PWD/../../../../OSGeo4W/include
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../OSGeo4W/lib/ -llaszip
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../OSGeo4W/lib/ -llaszipd
else:unix: LIBS += -L$$PWD/../../../../OSGeo4W/lib/ -llaszip
INCLUDEPATH += $$PWD/../../../../OSGeo4W/include
DEPENDPATH += $$PWD/../../../../OSGeo4W/include
///////////////////////////////////////////////////////////////
and when i am running the code given below, I am getting undefined reference error
ifstream stream;
stream.open("lidar_sample.las", std::ios::in | std::ios::binary);
ReaderFactory f;
Reader reader = f.CreateWithStream(stream);
error: undefined reference to `liblas::ReaderFactory::CreateWithStream(std::istream&)'
【问题讨论】:
【参考方案1】:这里只有两个可能的答案。
-
链接器找不到您的 liblas
您的 liblas 不是
与您的标题相同的版本。
【讨论】:
但是当我将它们包含在我的 .cpp 中时,我得到了所有 liblas 头文件 头文件来自这一行: INCLUDEPATH += $$PWD/../../../../OSGeo4W/include ,库来自这一行: else:unix: LIBS += -L$$PWD/../../../../OSGeo4W/lib/ -lliblas - 验证它们确实是正确的。 好的,明白了。但是我如何检查你提到的第二种可能性。 如果你在linux上,在库上运行nm工具,看看它是否确实有你正在调用的方法。 我在 Windows 上以上是关于为啥在将 liblas 链接到 Qt 后出现未定义的参考错误?的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV2.4.9 With Qt5.3.1 开发环境配置问题解决篇
OpenCV2.4.9 Qt5.3.1 开发环境配置错误原因与解决方案
为啥即使在包含 math.h 并使用 -lm 链接到数学库之后我也会收到“未定义的符号:.sqrtf”