forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   STL export (http://forum.boolean.name/showthread.php?t=14718)

wolfhound512 12.05.2011 16:42

STL export
 
Всем привет.
Такая задача:
A ) Нужно экспортировать класс из DLL, но методы его работают с std::string. Проблема в том что разные STL между собой не совместимы. Как быть?
  1. писать свои строки
  2. писать обертку для стандартных строк и экспортировать ее
  3. компилировать dll для каждой версии STL (а их наверное не мало?)
B ) Нужно экспортировать класс из DLL, но в ряды его protected членов затесался std::vector. Если его не трогать, то проблем нет. Но если создать производный класс, и обратиться к вектору, то при использовании разных STL видимо получим ошибку.
варианты те же.

Можете что-нибудь подсказать? Может еще какие-нибудь варианты?

HolyDel 12.05.2011 18:44

Ответ: STL export
 
хороший вопрос

я думаю лучше по возможности не использовать неперносимые типы на стыке библиотека - клиентская программа

хотя сам так делаю((

Mr_F_ 12.05.2011 18:54

Ответ: STL export
 
в принципе и стринг и вектор внутри имеют неразрывный линейный массив данных. можно передавать просто указатель на него (string::c_str(), &myVector[0]) и подсовывать (как? не знаю, надо курить) в другой стринг/вектор, желательно без копирования.

wolfhound512 12.05.2011 20:34

Ответ: STL export
 
Цитата:

в принципе и стринг и вектор внутри имеют неразрывный линейный массив данных. можно передавать просто указатель на него (string::c_str(), &myVector[0]) и подсовывать (как? не знаю, надо курить) в другой стринг/вектор, желательно без копирования.
Если функции будут принимать указатель на массив, то это будут обычные char*, object* и т.п., все удобство STL пропадет.

Хотя может и черт с ним, может стоит отказаться от STL...

Mhyhr 10.08.2012 00:33

Ответ: STL export
 
Таки какие выводы вы сделали за год? Как обходите?

HolyDel 10.08.2012 01:09

Ответ: STL export
 
не экспортирую стл (и вообще шаблонные типы).
стл используется внутри ядра - а наружу торчат простые типы, структуры и указатели.

wolfhound512 10.08.2012 08:21

Ответ: STL export
 
Цитата:

Сообщение от HolyDel (Сообщение 235860)
не экспортирую стл (и вообще шаблонные типы).
стл используется внутри ядра - а наружу торчат простые типы, структуры и указатели.

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


Часовой пояс GMT +4, время: 21:09.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot