2010-11-23 2 views
2

Мне нужно загрузить DLL в другую DLL (Visual C++), поэтому я могу использовать классы, встроенные в первую во второй. У меня есть код для обоих, так как я создал обе библиотеки dll, но я никогда не динамически загружал библиотеку, поэтому я не уверен, как это делается ...Динамическая загрузка DLL в другую DLL

Кроме того, я хочу сделать эту многоплатформенную I уже скомпилированы как .dll и .so, поэтому было бы очень удобно использовать независимый от платформы метод ... в противном случае я могу использовать макросы для включения окон или специфического для Linux кода.

С наилучшими пожеланиями и большое спасибо

ответ

0

Обычно просто компилировать и компоновать в DLL низшего уровня. Это создаст самую DLL и файл .LIB. Скомпилируйте и подключите следующую DLL к цепочке, связывая ее с этим .LIB-файлом. Продолжайте цепочку, пока не достигнете .EXE, который (как правило) ничего не связывает.

+0

Okie dokie, сделаю, спасибо за быстрый ответ – Alex 2010-11-24 07:39:25

1

Функции для загрузки библиотеки динамически: LoadLibrary (Windows), dlopen (Linux). Чтобы получить символы: GetProcAddress (Windows), dlsym (LInux). Закройте открытую библиотеку: FreeLibrary (Windows), dlclose (Linux). Существует статья о том, как динамически загружать классы в окна: 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. Надеюсь, это поможет вам.

Существует дополнительная информация о классах нагрузки динамически на окнах и 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).

+0

Ничего себе, отличные статьи, огромное спасибо! – Alex 2010-11-24 07:40:29

Смежные вопросы