我尝试将一个动态库(.so)包含到另一个中。比我把第一个库包含到app中。 TDS-Converter/Converter
它的源代码目录。使用此配置时,尝试通过undefined reference to
调用第二个库的任何函数时会出错。
QT -= gui
TEMPLATE = lib
unix {
DEPENDPATH += . ../../TDS-Converter/Converter
INCLUDEPATH += ../../TDS-Converter/Converter
LIBS += ../../TDS-Converter/Converter/Converter -lConverter
}
win32 {
}
SOURCES += main.cpp\
...
HEADERS += \
...
如何解决这个问题?
答案 0 :(得分:0)
你的LIBS
似乎错了,应该是
LIBS += -L../../TDS-Converter/Converter/Converter -lConverter
...并仔细检查文件是否正确,如果没有,则修复:
../../TDS-Converter/Converter/Converter/libConverter.so
如果您正在讨论运行时,请继续阅读:
其他库未在您的库中“包含”,您的库使用。所以它需要在运行时可用。快速修复,在运行使用您的库的应用程序时将LD_LIBRARY_PATH
environment variable设置为../../TDS-Converter/Converter/Converter
目录。
LD_LIBRARY_PATH
环境变量的替代方案是
ldconfig
刷新库缓存。缺点是,你需要root和杂乱的系统库目录。/etc/ld.so.conf
(或者最好添加到/etc/ld.so.conf.d
下的新文件中),然后运行ldconfig
刷新库缓存。不足之处在于,您需要root和杂乱的系统配置。