plugin是作为dll的一种特殊的应用而存在的. 也就
是说,在linux下面,他是so的一种应用而已. 动态链接装入器例程 dlopen 需要在文件系统
中查找共享目标文件以打开文件并创建句柄. 有 4 种方式用以指定文件的位置:
1.dlopen call 中的绝对文件路径
2.在 LD_LIBRARY_PATH 环境变量中指定的目录中
3.在 /etc/ld.so.cache 中指定的库列表之中,可以用命令更新ld.so.cache:
ldconfig -C ld.so.cache -n ../lib -v
4.先在 /usr/lib 之中,然后在 /lib 之中
今天主要是看了qt相关的plugin的东西. 并且尝试了一个plugin的程序,对于我们来说,
plugin是一个非常非常有用的东西,以后要多用.
对于qt而言,plugin是做成动态链接库的形式存在的,但是qt的plugin有一些特殊的地方. 事
实上,qt的plugin有两种,高层次和低层次的. qt的高层(high level)plugin是有qt的
meta-object system自动管理的. 也就是说你必须把你的plugin放在特定的子目录下面不能
修改,qt会自动寻找这些plugin. 当然我们可以用QLibrary重新设定qt lib的path,但是我觉
得这样是非常不礼貌的做法. 当然了,高层plugin也会自动搜寻系统的当前执行目录下的子
目录来寻找plugin. 高层的plugin包括了许多有用的东西,包括了image,textcode,style等
等.
而对于我们更加有用的低层次的plugin,这种plugin可以用QPluginLoader来加载,我们可以
利用qApp::applicationDirPath()来得到我们当前的程序运行path,然后利用
QDir::cd("plugins")这样的操作进入我们的plugins子目录,然后load之. 对于这类的
plugin我们需要遵循下列的