QLibrary Visual C ++全局变量

时间:2014-05-27 16:56:27

标签: c++ qt dll

我使用QLibrary在Qt项目中使用Visual C ++ DLL。 Everyhing适用于函数,但是我是否也可以直接访问DLL导出的全局变量?如果我尝试这样做,我的程序会崩溃,但解决方案似乎有效。

使用extern "C"extern __declspec (dllexport)将全局变量导出为有效的函数。这甚至是可能的,还是我需要编写一个函数来首先返回变量?如果有可能,你能提供一个像Qt助手中的功能一样的例子吗?

1 个答案:

答案 0 :(得分:0)

您可以定义一个函数来访问全局变量。共享库的代码如下:

int myVariable;

extern "C" Q_DECL_EXPORT int get_myVariable()
{
     return myVariable;
}

在您的Qt应用程序中,您可以调用该函数并访问变量:

#include <QLibrary>

typedef int (*get_myVariable_func)();

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

    QLibrary library( "./dynamic_library" );
    library.load();
    if( !library.isLoaded() )
    {
        qDebug() << "Cannot load library.";
        return 0;
    }

    get_myVariable_func get_variable = (get_myVariable_func)library.resolve( "get_myVariable" );
    if( get_variable )
    {
        int var= get_variable();

        qDebug() << "my variable = " << var;

    }

    return a.exec();
}