我需要在另一個DLL(Visual C++)中加載一個DLL,因此我可以在第二個DLL中使用嵌入在第一個DLL中的類。我有這兩個代碼,因爲我創建了這兩個DLL的,但我從來沒有動態加載一個庫,所以我不知道這是如何完成的...在另一個DLL中動態加載一個DLL
此外,我想使這個多平臺,我已經編譯爲.dll和.so,所以這將是一個很好的獨立於平臺的方法來做到這一點......否則,我可以使用宏來包含windows或linux特定的代碼。
最好的問候和感謝
我需要在另一個DLL(Visual C++)中加載一個DLL,因此我可以在第二個DLL中使用嵌入在第一個DLL中的類。我有這兩個代碼,因爲我創建了這兩個DLL的,但我從來沒有動態加載一個庫,所以我不知道這是如何完成的...在另一個DLL中動態加載一個DLL
此外,我想使這個多平臺,我已經編譯爲.dll和.so,所以這將是一個很好的獨立於平臺的方法來做到這一點......否則,我可以使用宏來包含windows或linux特定的代碼。
最好的問候和感謝
通常只是編譯和鏈接的最低級DLL。這將創建DLL本身和一個.LIB文件。編譯鏈接鏈中的下一個DLL,並鏈接到該.LIB文件。繼續上鍊直到你到達.EXE(通常)沒有其他鏈接反對。
動態加載庫的函數有:LoadLibrary(Windows),dlopen(Linux)。獲取符號:GetProcAddress(Windows),dlsym(LInux)。關閉開放庫: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)。
哇,很棒的文章,非常感謝! – Alex 2010-11-24 07:40:29
Okie dokie,會做,感謝您的快速響應 – Alex 2010-11-24 07:39:25