• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::

            ########################### 生成DLL的工程: #######################

            修改pro文件: TEMPLATE=lib


            ########################### .h文件 #######################

            #ifndef DLLTEST_H

            #define DLLTEST_H


            #ifdef Q_WS_WIN

            #define MY_EXPORT __declspec(dllexport)

            #else

            #define MY_EXPORT

            #endif

            class DllTest {

            public:

                DllTest();

                int getAge() {

                    return 10;

                }

            };


            extern "C" MY_EXPORT int add(int a, int b) {

                return a + b;

            }


            extern "C" MY_EXPORT DllTest* getDllTest(); // 使用類


            #endif // DLLTEST_H

            ########################### .cpp文件 #######################

            #include "dlltest.h"

            #include <qDebug>


            DllTest::DllTest() {

                qDebug() << "Shared Dll Test";

            }


            DllTest* getDllTest() {

                return new DllTest();

            }


            // 如果是C++編譯的函數(shù), 要使用extern "C"來包裝成C函數(shù)(導(dǎo)出函數(shù), 給外部提供服務(wù)).


            ########################### 使用DLL的工程: #######################

            pro文件中加入: LIBS += "DllTest.dll"


            ########################### 測試.cpp文件 #######################

            #include "dlltest.h"

            #include <QLibrary>

            #include <qDebug>

            #include <QApplication>


            typedef int (*AddFunc)(int, int);

            typedef DllTest* (*GetFunc)();


            int main(int argc, char* argv[]) {

                QApplication app(argc, argv, false);

                QLibrary lib("DllTest");

                if (lib.load()) {

                    qDebug() << "Load dll successfully.";

                    AddFunc func = (AddFunc)lib.resolve("add");

                    if (func) {

                        qDebug() << func(1, 3);

                    }


                    GetFunc g = (GetFunc)lib.resolve("getDllTest");

                    if (g) {

                        DllTest *t = g(); // 使用DLL中的類

                        qDebug() << t->getAge();

                        delete t;

                    }

                } else {

                    qDebug() << "Load dll Failed";

                }



                return app.exec();

            }


            posted on 2009-08-29 00:25 逛奔的蝸牛 閱讀(4118) 評論(1)  編輯 收藏 引用 所屬分類: C/C++Qt

            評論

            # re: Qt: 生成最簡單的dll示例 2009-11-13 20:49 sdink
            能不能在寫清楚一點(diǎn),,,,最近在網(wǎng)上找了很多。。便是都不能用。。。。  回復(fù)  更多評論
              

            97精品伊人久久大香线蕉app| 久久综合丁香激情久久| 国内精品久久久久| 伊人久久大香线蕉亚洲| 亚洲精品午夜国产va久久 | 国产精品久久久久影视不卡| 久久精品青青草原伊人| 久久精品国产一区二区三区| 亚洲国产精品久久| 久久婷婷五月综合97色直播| 国产A级毛片久久久精品毛片| 色综合久久综精品| 精品人妻伦九区久久AAA片69| 国产激情久久久久影院| 久久久久久无码国产精品中文字幕 | 久久综合久久性久99毛片| 久久人人爽人人爽AV片| 久久综合九色欧美综合狠狠| 午夜精品久久影院蜜桃| 久久AV高潮AV无码AV| 亚洲中文久久精品无码| 国产精品久久久久AV福利动漫| 亚洲乱码精品久久久久..| WWW婷婷AV久久久影片| 久久婷婷国产麻豆91天堂| 久久亚洲国产成人精品无码区| 久久综合伊人77777麻豆| 久久精品日日躁夜夜躁欧美| 久久久久久亚洲Av无码精品专口| 精品久久久久久久久午夜福利| 久久国产精品免费| 久久国产劲爆AV内射—百度| 免费国产99久久久香蕉| 久久夜色精品国产| 欧美喷潮久久久XXXXx| 久久精品国产99国产精品| 亚洲精品无码久久久久| 久久精品国产只有精品66 | 国内精品欧美久久精品| 日韩精品久久久久久久电影蜜臀| 久久激情五月丁香伊人|