久久久久久久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://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲精品一区二区三区中文字幕 | 久久久夜色精品亚洲 | 黄色大片在线视频 | 男女羞羞视频在线观看 | 网站国产| 九色一区 | 久久久久九九九女人毛片 | 日韩欧美三级电影 | 久久久一二三区 | 国产精品免费视频一区 | 久草成人网 | 久久成人18免费网站 | 另类 综合 日韩 欧美 亚洲 | 中文字幕的av | 99热在这里只有精品 | 久久伊| 国产精品日韩一区二区 | 精品一区欧美 | 精品国产一区三区 | 黄a大片 | 免费在线观看一级毛片 | 亚洲综合网站 | 日韩国产欧美 | 成人在线视频一区 | 国产精品免费一区二区 | 国产精品自产拍在线观看蜜 | 国产精品美女久久久久久久久久久 | 四虎成人精品永久免费av九九 | 精品av天堂毛片久久久借种 | 国精品一区二区 | 久久精品国产99国产精品 | 日韩中文字幕第一页 | 午夜理伦三级理论三级在线观看 | 国产日韩一区二区三免费高清 | 亚洲国产视频一区 | 久久国产精品99久久久久久丝袜 | 亚洲 欧美 另类 日韩 | 久久久久久国产精品免费免费 | 美女福利视频网站 | 欧美激情视频一区二区三区免费 | 天天噜天天干 |