久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: linux C++ 共享庫導出類 [打印本頁]

作者: 51黑tt    時間: 2016-3-5 19:57
標題: linux C++ 共享庫導出類
   1.共享庫的對外接口函數的聲明必須加上extern C”。
2.使用共享庫對話接口函數生成的對象指針時在該對象未被釋放之前不能關閉共享庫句柄,否則會出現segmentation fault錯誤。
以下是一個插件式設計的示例:

1、主執行程序:main.cpp
#include
#include
#include "SMSGamePlugin.h"
int main(int argc, char** argv)
{
        void *GameLib = dlopen("./Flower.so", RTLD_LAZY);
        const char *dlError = dlerror();
         if (dlError)
        {
               < "dlopen error!" << dlError <<
                return(-1);
        }
        CSMSGamePlugin *(*pGetGameObject)(void);
        pGetGameObject = (CSMSGamePlugin *(*)(void))dlsym(GameLib, "GetGameObject");
        dlError = dlerror();
        if (dlError)
        {
               < "dlsym error!" << dlError <<
                return(-1);
        }
        CSMSGamePlugin *pGame = (*pGetGameObject)();
        pGame->Initialize();
        pGame->Load();
        pGame->Handle();
        delete *pGame;
        dlclose(GameLib);
}

2、公用基類部分:SMSGamePlugin.h
#ifndef __SMSGamePlugin_h__
#define __SMSGamePlugin_h
class CSMSGamePlugin
{
public:
        virtual int Initialize(void) = 0;
        virtual int Load(void) = 0;
        virtual int Handle(void) = 0;
};
#endif
編譯:g++ -rdynamic -ldl -s -o Test main.cpp

3、共享庫部分:
共享庫頭文件:Flower.h
#ifndef __Flower_h__
#define __Flower_h__
#include "SMSGamePlugin.h"
extern "C" CSMSGamePlugin *GetGameObject(void);
class CFlower: public CSMSGamePlugin
{
public:
        virtual int Initialize(void);
        virtual int Load(void);
        virtual int Handle(void);
};
#endif

4、共享庫實現文件:Flower.cpp
#include
#include "Flower.h"
CSMSGamePlugin *GetGameObject(void)
{
        return(new CFlower());
}
int CFlower::Initialize(void)
{
       < "Initialize()" <<
        return(0);
}
int CFlower::Load(void)
{
       < "Load()" <<
        return(0);
}
int CFlower::Handle(void)
{
       < "Handle()" <<
        return(0);
}
編譯:
    g++ -c Flower.cpp
    g++ -shared -o Flower.so
5、注意:
如果不加extern "C"編譯后運行時就會提示:







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 男女视频免费 | 日本国产一区 | 欧美视频a | 嫩草久久 | 精品国产精品三级精品av网址 | 国产三级免费观看 | av手机在线 | 91片黄在线观看 | 久色精品 | 色婷婷av一区二区三区之e本道 | 日本在线免费观看视频 | 17c在线 | 亚洲视频中文字幕 | 免费成人毛片 | 欧美日韩国产在线 | 中文字幕在线观看一区二区三区 | 五月开心激情网 | 国产精品一品二区三区的使用体验 | 麻豆成人91精品二区三区 | 91禁蘑菇在线看 | 日韩免费视频 | 欧美福利一区 | 日韩三级久久 | 日韩欧美亚洲 | 日韩精品久久久久久免费 | 手机看片久久 | 久久综合久 | 免费中文字幕日韩欧美 | www.爱爱| 精品一区二区三区免费看 | 亚洲一区二区三区视频 | 欧美在线视频观看 | 四虎黄色片 | 成人精品国产 | 午夜在线 | 国产天天操 | 亚洲国产成人精品女人久久久 | 成人精品视频在线观看 | 一级免费黄色片 | 国产视频中文字幕 | 日韩在线视频免费 |