Re[6]: возврат vector<My_Struct> из функции в .dll
От:
Аноним
Дата:
15.12.04 14:52
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, yxiie, Вы писали:
Y>>>Здравствуйте, <Аноним>, Вы писали:
К>>>>>Использовать рантайм Multithreaded DLL. А>>>>собирается с /MTd
К>>>>>Как вариант: откажись от вектора, передавай указатели на массивы. А>>>>так массивы придется грохать опять же не в той длл в какой они были созданы или я чего не догоняю?
Y>>>ну дак экспортируй из той длл также ф-цию MyDllFree А>>это все ведет к тому, что возвращаемый вектор придется делать глобальным, а я этого делать не хочу
А>никакой глобализации для этого не требуется. Просто сделай фабрику которая создает эти массивы функцией create и мочит их destroy и все. соответственно в экспортируемой функции DLLCreate вызывай у этого объекта create, а в DLLFree destroy
как я понял в библиотеке которая должна выдавать vector (в нашей терминологии длл1) будет жить некая сучность которая будет создавать вектор/массив, который далее будет возвращаться длл2 через вызов GetMenu, далее эта сучность будет грохать вектор/массив при выгрузке длл1? но тогда, по сути дела, эта сучность просто обертка вокруг вектора/массива, в чем преимущество, глобальный вектор/массив или вектор/массив с оберткой. к тому же длл1 должна экспортировать GetMenu в как можно более простом виде, идеальный вариант — GetMenu возвращающая вектор, это пользовательская библиотека, наворотов должно быть минимум
такой вопрос: сюда экспорт аллокаторов никак нельзя прикрутить, допустим передать аллокатор из длл2, в длл1 используя переданный аллокатор заполнить вектор и вернуть его а длл2?