Создаём либу


MoiClass.h
#ifndef _MoiClass_h_
#define _MoiClass_h_
extern "C" int Fun(int a);
extern "C" int Fun2();
#endif// _MoiClass_h_

MoiClass.cpp

#include "MoiClass.h"
int Fun(int a){return(2*a);};
int Fun2(){int a=44;return(2*a);};

//подсоединяем h и в срр пишем реализацию
//работает все , незабывай ставит точные прототипы (т.е. extern "C" ) такие же как и в MoiClass.h


lib.pro

TEMPLATE = lib
TARGET = koks
DEPENDPATH += .
INCLUDEPATH += .
QT -= gui
# Input
HEADERS += MoiClass.h
SOURCES += MoiClass.cpp
CONFIG += release

Подключаем динамически и статически



koks.h

#ifndef _koks_h_
#define _koks_h_
extern "C" int Fun(int a);
#endif// _koks_h_
//Этот файл содержит прототип функции (пусть будет так, не берем *.h который использовался при сборке либы)

MoiClass.cpp

#include
#include
...
#include "koks.h"
...

void Gooo::ButClick2()//статически
{
int aaaa=Fun(44);
QMessageBox::warning(this,"1",QString::number(aaaa),QMessageBox::Save,QMessageBox::Save);
}

void Gooo::ButClick()//динамически
{
int aaaa=0;
QLibrary myLib("koks.dll");
myLib.load () ;
if(!myLib.isLoaded ())QMessageBox::warning(this,"1","!myLib.isLoaded ()",QMessageBox::Save,QMessageBox::Save);
if(myLib.isLoaded ())QMessageBox::warning(this,"1","myLib.isLoaded ()",QMessageBox::Save,QMessageBox::Save);

//----------------------------------------------------------------------------------------------------------
typedef int (*MyPrototype)();
MyPrototype myFunction = (MyPrototype) myLib.resolve("Fun2");

if (myFunction)aaaa=myFunction();
else QMessageBox::warning(this,"1","No"+myLib.errorString(),QMessageBox::Save,QMessageBox::Save);
QMessageBox::warning(this,"1",QString::number(aaaa),QMessageBox::Save,QMessageBox::Save);
//----------------------------------------------------------------------------------------------------------
typedef int (*MyPrototype2)(int);
MyPrototype2 myFunction2 = (MyPrototype2) myLib.resolve("Fun");


if (myFunction2)aaaa=myFunction2(33);
else QMessageBox::warning(this,"1","No"+myLib.errorString(),QMessageBox::Save,QMessageBox::Save);
QMessageBox::warning(this,"1",QString::number(aaaa),QMessageBox::Save,QMessageBox::Save);
//----------------------------------------------------------------------------------------------------------
}

lib_proverka.pro
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
LIBS += koks.dll
CONFIG += release
# Input
HEADERS += koks.h MoiClass.h
FORMS += untitled.ui
SOURCES += MoiClass.cpp shablon.cpp<- тут main



ну вот как-то так
(если *.h не прописывать в *.срр при сборке либы
и в проге прототипы писать без extern "C"
то либу можно подключить только статически)
(для динамического подключения в срр должен подключаться h и extern можно не писать, но тогда
статич не подключишь на этапе линковки не найдет реализацию)

lib на qt3 (можно qt4) gccv2 (gccv4), программа на qt4(но падает)

Хостинг от uCoz