想在linux中写动态链接库,貌似在linux中叫共享库。。
共享库叫libmy.so
程序如下:
libmy.h
#ifndef LIBMY_H
#define LIBMY_H
#include "libmy_global.h"
class LIBMYSHARED_EXPORT Libmy {
public:
Libmy();
virtual void hello();
};
extern "C" Libmy* instanceOf();
#endif // LIBMY_H
libmy.cpp
#include "libmy.h"
#include <stdio.h>
Libmy::Libmy()
{
}
void Libmy::hello()
{
printf("hello mylib!\n");
}
Libmy* instanceOf()
{
return new Libmy();
}
调用共享库的程序如下:
#include <iostream>
#include <QLibrary>
#include "/home/hrl/Documents/libmy/libmy.h"
typedef Libmy* (*Instanceof)();
int main(int argc, char *argv[])
{
QLibrary mylib("libmy");
if(mylib.load())
{
Instanceof instanceof = (Instanceof)mylib.resolve("instanceof");
if(instanceof)
{
Libmy *libmy = instanceof();
libmy->hello();
delete libmy;
}
}
else
std::cout << "DLL is not loaded!"<<std::endl;
return 0;
}
结果。。
既不输出 "DLL is not loaded!"
也不输出 "hello mylib!
肿么回事啊。。。。
