Посмотрел в поиске, в хелпе, и решил попробовать.
Создал либу с одной единственной ф-цией:
#include <qapplication.h>
extern "C" void PrintHex(int val){
qDebug ("%08X", val);
}
откомпилил в libofn.so.1.0.0 c параметрами в ofn.pro
TEMPLATE = lib
CONFIG -= moc
INCLUDEPATH += .
CONFIG += dll
# Input
SOURCES += main.cpp
Полученую либу положил в папку с программой, из которой предполагается загружать либу, и в папку /usr/X11R6/lib/ (как одну из папок, в которой ищутся либы).
Теперь пытаюсь загрузить либу:
QLibrary lib( "ofn" );
qDebug(lib.library()); //выводится имя 'libofn.so'.
if ( lib.load () ){
qDebug("library loaded");
typedef void (*myProc)( int );
myProc PrintHex = (myProc) lib.resolve( "PrintHex" );
if ( PrintHex )
PrintHex( 115 );
else
qDebug("PrintHex not found");
}
else{
qDebug("library loading fail");
}
Но либа не грузится ("library loading fail"). Почему?
добавлено спустя 59 минут: Нашёл: если указано только имя либы, то грузится только из /usr/lib. Другие папки, типа qt-шных стандартных папок, не подходят.
Или надо указывать полный путь к файлу.