crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Неопределенные классы в динамической библиотеке
Iron Bug
  опции профиля:
сообщение 5.11.2014, 13:04
Сообщение #11


Профессионал
*****

Группа: Модератор
Сообщений: 1577
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 218 раз(а)




Репутация:   12  


GUI тут вообще ни при чём. я так понимаю, что это обычный софт для тестирования работы алгоритмов.
надо не только создать некий объект с алгоритмом, но и вызывать его, с переменными параметрами. а вот тут-то и происходит затык.
короче говоря, это вызов функции по указателю, с передачей заранее неизвестного числа аргументов. с dll это не проканает. тут надо городить какой-то огород со специальными методами передачи параметров, чтобы унифицировать вызовы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 5.11.2014, 13:15
Сообщение #12


Мастер
******

Группа: Модератор
Сообщений: 3284
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


не обязательно, можно так же передавать указатель на структуру, в которой будут перечисленны параметры...
А лучше как я уже говорил, в указателе на класс! А в классе уже сделать стандартная реализация получения функции алгоритма, и параметром с их описанием! ;)
В предложенном мной варианте, как раз все просто!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 5.11.2014, 13:55
Сообщение #13


Профессионал
*****

Группа: Модератор
Сообщений: 1577
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 218 раз(а)




Репутация:   12  


ну да. только без темплейтов получится монстр. потому что обработка разных типов параметров займёт туеву хучу кода. обработка совершенно одинакова для всех типов, но темплейты в случае с библиотеками не работают. нельзя экспортировать классы с шаблонами.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 5.11.2014, 14:34
Сообщение #14


Мастер
******

Группа: Модератор
Сообщений: 3284
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Блин, блинский, это то у меня совсем из головы-то и вылетело!
Беру тайм-аут на подумать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Flex Ferrum
  опции профиля:
сообщение 5.11.2014, 16:12
Сообщение #15


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 26.11.2007
Пользователь №: 26

Спасибо сказали: 0 раз(а)




Репутация:   0  


(зашёл сюда по приглашению ViGOur'а)
Мне видится такой вариант ответа на поставленный в первом посте вопрос - скомбинировать compiletime-анализ в runtime.
Со стороны плагина делается следующее:
1. Для плагина делается небольшой шаблонный фреймворк, основная задача которого - принять сигнатуру тестируемой функции, констрейнты на аргументы и превратить это в универсальный invoke-ер. При этом фреймворк (используя typeinfo и typename для сигнатуры функции и для каждого аргумента) формирует набор структур, которые однозначно и с необходимой детализацией эту функцию описывают. В общем итоге плагин передаёт приложению следующую информацию:
- Полученные на этапе компиляции структуры, описывающие типы аргументов функции и констрейнты на них;
- Указатель на функцию-invoker (с точно заданной сигнатурой), которая получает на массив аргументов и передаёт их в тестируемую функцию.
2. Со стороны приложения делается runtime-анализатор данных, полученных от плагина. На основании этих данных строится GUI, прописываются валидаторы аргументов и т. д. Когда пользователь нажимает на кнопку "test" (или как она там будет называться), то введённые им аргументы превращаются в массив структур, и этот массив передаётся в invoke-ер. Там все элементы этого массива превращаются в аргументы тестируемой функции и делается собственно вызов.
Для добавления type safety можно использовать boost::variant для передачи значений аргументов (ведь GUI будет работать с конечным набором типов).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.12.2018, 16:59