C++ . Экспорт.

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 10 май 2007.

  1. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Привет. Не пинайте, я только учусь.

    Вопрос 1

    Пишу проект, там ехе - это чисто интерфейс. Пишется на делфях... Компоненты там всякие красивые и прочие... Но это потом..

    А сейчас движок пишется в виде длл на С++. (VC7)
    Там такое дело, нужно экспортировать не только функции, но и переменные... К примеру, чтобы можно было отслеживать ход операции и устанавливать ProgressBar в нужное состояние.
    Т.е. переменные, экспортируемые из длл, которые можно читать и менять из ехе.

    Самый очевидный вариант - это VirtualAlloc и разделяемая память или мэппинг. Но чувствую, что не то что-то.
    Вопрос.
    Можно ли при сборке длл как-то задать параметр, что такая-то переменная экспортируется?
    Если нет, то как наиболее просто организовать экспорт переменных...?

    ------------------------

    Вопрос 2
    Где можно почитать о формате chm и если кто-то сталкивался или сам писал компилятор, скиньте сюда или в ПМ инфу и ссылки.

    Заранее благодарен
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    В DEF-файле можно описать. Экспорт переменной принципиально ничем не отличается от экспорта функции.
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Добавить к Quantum я вряд ли что могу. Укажи либо в деф-файле, либо в /EXPORT, либо в __declspec(dllexport)
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Второе в С++ задекорируется и из делфи труднее будет импортировать (придётся писать декорированное имя).
     
  5. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    а можно написать 2 экспортируемые функции: float get_progress(void) и set_progress(float value) и тем самым избавится от экспорта переменной (что имхо является лучшим решением);
    hhc.exe? могу скинуть простой пример (проект) по сборке хелпа.
     
  6. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    kchmviewer - open-source программа для просмотра CHM в Unix.
     
  7. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Quantum
    Т.е. если у нас такое дело (без деструкторов и конструкторов)

    class GUI_Opt
    {
    public:
    int pbPosition1;
    int pbPosition2;
    int pbPosition3;
    int pbPosition4;
    int CntR;
    char* szStat [255];
    };

    ......
    ......
    .....
    GUI_Opt somevar1;

    то что нужно прописать в def-файле, чтобы экспортировать somevar1?
    И размер при экспорте задавать нужно как-то? Это ж не двор будет... Или там просто экспортируется указатель?


    Нет, как раз это не является лучшим решением... Я об этом в первую очередь подумал... Потом пришел к выводу что вызывать функции каждый раз когда нужно получить параметр - не вариант.



    Давай. Потому как первый раз столкнулся с необходимостью программно из htm-траничек собрать chm файл.
     
  8. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    .def:
    EXPORTS
    somevar1
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Наоборот, мониторить изменение переменной - это плохое решение.

    Указатель.

    HTML HelpWorkshop идёт вместе со студией. htm2chm - простая прога, помогающая просто собрать chm-файл. Helpware FAR - многофункциональная штуковина, чтобы не сидеть в HTML HelpWorkshop. Она может и MS Help 2.x делать.
     
  10. Ultrin Faern

    Ultrin Faern New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    170
    DLL - это не include для C++ - это все-таки немного другой зверь. И отношение к нему должно быть соответствующим.

    Человек судя по всему зациклился на языке программирования, и забыл про другие средства решения проблемы нотификации (оповещения того-же ProgressBar-а):

    1) Самый тупой вариант - передаем в вызывающую функцию хендл окна, а функция будет слать статусные сообщения через оычную очередь сообщений (как вариант можно слать в очередь потока)

    2) Передавать в функцию адрес CallBack-процедуры. А параметры ее можно выдумать какие угодно.
     
  11. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    IceStudent
    Нет, там другая ситуация. Это менеджер закачек, который может качать файлы и сайты, и в свою очередь последние собирать в chm айлы для удобства.
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    nitrotoluol
    Тогда обычная сайтовая качалка + htm2chm. Или продвинутая, типа Offline Explorer, которая умеет сама экспортировать скачанное в chm.