The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Аналог DLL в Unix, !*! Flex25, 25-Дек-06, 11:44  [смотреть все]
1. Мне нужно содать что-то вроде DLL - скомпилированный файл, который хранит набор функций. Моя программа на C++ должна во время выполнения подключаться к этому файлу и запускать ее функции. Пожскажите в каком направлении копать?

2. Так же хотел бы узнать: можно ли в эти DLL записывать не просто функции, а целые объекты со своими свойствами и методами?

  • Аналог DLL в Unix, !*! GrimObserver, 12:29 , 25-Дек-06 (1)
    • Аналог DLL в Unix, !*! sandy, 14:00 , 26-Дек-06 (2)
      Допустим есть заголовочник myfunc, где функции объявлены, и myfunc.cc, где написаны тела функций

      Компилируем:
      # g++ -c -fPIC -o myfunc.o myfunc.cc
      # g++ -c -shared -o mufinc.so myfunc.o

      Вроде бы так. Это под FreeBSD
      Если это на C++, не забудь про extern "C"


    • Аналог DLL в Unix, !*! sandy, 14:11 , 26-Дек-06 (4)
      >2. Так же хотел бы узнать: можно ли в эти DLL записывать
      >не просто функции, а целые объекты со своими свойствами и методами?
      >

      Это цитата, но не помню откуда, вроде бы с этого же форума:

      ---lib.h---
      class foo {
      public :
          foo();
          virtual ~foo();
      };

      extern "C" {
      class foo *create_foo();
      void delete_foo(class foo *);
      };
      ---lib.h---

      ---lib.cc---
      #include "lib.h"

      class foo * create_foo() {
          return new foo();
      }

      void delete_foo(class foo *foo_) {
          delete foo_;
      }
      ---lib.cc---

      из своего приложения импортируете create_foo/delete_foo и через них
      создаете/удаляете экземпляры класса. за счет того, что функции доступа
      объявлены как "C", проблем с декарацией имен уже не будет.
      надеюсь, идея понятна.

  • Аналог DLL в Unix, !*! sandy, 14:03 , 26-Дек-06 (3)
    >1. Мне нужно содать что-то вроде DLL - скомпилированный файл, который хранит
    >набор функций. Моя программа на C++ должна во время выполнения подключаться
    >к этому файлу и запускать ее функции. Пожскажите в каком направлении
    >копать?

    Допустим есть заголовочник myfunc, где функции объявлены, и myfunc.cc, где написаны тела функций

    Компилируем:
    # g++ -c -fPIC -o myfunc.o myfunc.cc
    # g++ -c -shared -o mufinc.so myfunc.o

    Вроде бы так. Это под FreeBSD
    Если это на C++, не забудь про extern "C"

    >2. Так же хотел бы узнать: можно ли в эти DLL записывать
    >не просто функции, а целые объекты со своими свойствами и методами?
    >

    Это цитата, но не помню откуда, вроде бы с этого же форума:

    ---lib.h---
    class foo {
    public :
        foo();
        virtual ~foo();
    };

    extern "C" {
    class foo *create_foo();
    void delete_foo(class foo *);
    };
    ---lib.h---

    ---lib.cc---
    #include "lib.h"

    class foo * create_foo() {
        return new foo();
    }

    void delete_foo(class foo *foo_) {
        delete foo_;
    }
    ---lib.cc---

    из своего приложения импортируете create_foo/delete_foo и через них
    создаете/удаляете экземпляры класса. за счет того, что функции доступа
    объявлены как "C", проблем с декарацией имен уже не будет.
    надеюсь, идея понятна.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру