我使用QLibrary在Qt项目中使用Visual C ++ DLL。 Everyhing适用于函数,但是我是否也可以直接访问DLL导出的全局变量?如果我尝试这样做,我的程序会崩溃,但解决方案似乎有效。
使用extern "C"
和extern __declspec (dllexport)
将全局变量导出为有效的函数。这甚至是可能的,还是我需要编写一个函数来首先返回变量?如果有可能,你能提供一个像Qt助手中的功能一样的例子吗?
答案 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();
}