在win下用QLibrary 载入动态库并不难,代码如下
cpp
QString strDll = "defineLib.dll";
QLibrary* pLibrary = new QLibrary(strDll);
if (pLibrary->load())
{
///成功
}
else
{
///失败
}
在做代码移植到Ubuntu上的时候把dll改成so,但是发现,动态库都不能载入了。代码如下。
cpp
QString strDll = "libdefineLib.so";
QLibrary* pLibrary = new QLibrary(strDll);
if (pLibrary->load())
{
///成功
}
else
{
///失败
}
测试动态库也是用Qt Creator生成的,也放到运行路径下了。想不明白,只能用绝对路径了,但是代码增加了一些,总感觉不太好。
后来突然想起来,Linux下都是用"./a.out" 运行程序的。加上这个试试吧。没想到竟然成功了。
cpp
QString strDll = "./libdefineLib.so";
QLibrary* pLibrary = new QLibrary(strDll);
if (pLibrary->load())
{
///成功
}
else
{
///失败
}
期间还犯了一个错误,代码里面的动态库名称大小写没写对,导致无法载入动态库,这个也是要注意的。