2015-11-04 77 views
0

有一个用QT(C++)编写的编译程序。在程序文件夹中添加了dll文件lib1.dll,lib2.dll等所有名称。我怎样才能在程序执行过程中获得这些库?即最初的方案是没有他们如何在C++代码执行过程中连接dll文件?

例如编译:

int n = 10; 
for(int i=0;i<n;i++) 
{ 
     include("lib"+i+".dll"); 
} 
+0

有很多[Windows API中的DLL相关的功能(HTTPS: //msdn.microsoft.com/en-us/library/windows/desktop/ms682599%28v=vs.85%29.aspx)。去看一下。 –

+0

这个问题与Qt4和Brainfuck语言有什么关系?请修改您的问题以仅包含相关标签。 –

回答

1

的问题是使用QLibrary

解决
for(int i=0; i<n;i++) 
    {    
     QString* pLoadLib =&sDrivers[i]; //запоминаем адрес переменной 
     std::cout<<sDrivers[i].toUtf8().constData()<<"\n";//выводим в консоль 
     QLibrary lib(*pLoadLib); //Разименование адреса - текст пути к ДЛЛ 
     if (!lib.load()) 
      { 
      std::cout<<"driver not loaded\n";//error 
      } 
     else 
      { typedef QString (*FuncType) (const QString&); 
        FuncType func = (FuncType)(lib.resolve("FuncName")); //Определяем функцию func как функция OddUpper из dll 
        if (func) 
        { 
         QString test = func("working"); 
         qDebug()<<test; 
        } 
        if (!func) 
        { 
         std::cout<<"func not loaded"; 
        } 
        lib.unload(); 
       } 
    }