在另一个DLL中动态加载DLL

时间:2010-11-23 23:01:41

标签: c++ dynamic shared-libraries

我需要在另一个dll(Visual C ++)中加载一个dll,所以我可以使用第二个中嵌入的第一个类。我有两个代码,因为我创建了两个dll,但我从来没有动态加载过库,所以我不确定这是怎么做的......

此外,我想创建这个多平台,我已经编译为.dll和.so,所以这将是一个很好的平台无关的方法来做到这一点...否则,我可以使用宏来包含窗口或linux特定代码。

致以最诚挚的问候和非常感谢

2 个答案:

答案 0 :(得分:1)

动态加载库的功能有:LoadLibrary(Windows),dlopen(Linux)。获取符号:GetProcAddress(Windows),dlsym(LInux)。关闭Open Library:FreeLibrary(Windows),dlclose(Linux)。有一篇文章介绍如何在Windows上动态加载类:http://www.codeproject.com/KB/DLL/classesexportedusingLL.aspx和Linux:http://www.linuxjournal.com/article/3687?page=0,0。还有代码可以在Windows和Linux上动态加载库:http://www.sview.ru/sources/libexample/loadLibrary.h。我希望这可以帮到你。

在Windows和Linux上有关于动态加载类的其他信息:

http://www.codeguru.com/cpp/w-p/win32/article.php/c1443(Windows)。 http://www.faqs.org/docs/Linux-mini/C++-dlopen.html#loadingclasses(Linux)。

答案 1 :(得分:0)

通常只编译和链接最低级别的DLL。这将创建DLL本身和.LIB文件。编译并链接链上的下一个DLL,链接该.LIB文件。继续向上链,直到你到达(通常)没有其他任何链接的.EXE。