0 / 0 / 0
Регистрация: 19.02.2008
Сообщений: 9
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
interface19.02.2008, 16:08. Показов 5489. Ответов 7
Метки нет (Все метки)
Помогите кто чем может! Пишу приложение использующее модули расширения. Программный интерфейс модулей реализован в виде экспортных функций. Данный интерфейс является "входной дверью" обеспечивающий доступ к ресурсам размещённым в модуле. Есть огромная необходимость создания множества подобных дверей. Пытаюсь релизовать поместив все экспортные функции в структуру типа interface. А в экспорт разместил лишь две функции: CreateInterface и DestroyInterface - соответсвенно создание и уничтожение интерфейса. На Делфи удалось реализовать функцию по созданию интерфейса следующим образом:
Пытался реализовывать функции интерфейса как и в классе:
В си подобных языках я делитант поэтому если что не так не судите строго. :huh:
0
|
19.02.2008, 16:08 | |
Ответы с готовыми решениями:
7
Реализация interface Выполнение всех Interface в одном потоке Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" IDispatch interface ADODB |
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
19.02.2008, 17:14 | 2 |
а в билдере есть же спецовые проекты, он тебе все пропишет, а тебе только методы нужно будет описать...
0
|
0 / 0 / 0
Регистрация: 19.02.2008
Сообщений: 9
|
|
20.02.2008, 13:06 [ТС] | 3 |
Да, я в курсе по поводу редактора интерфейсов и их методов. Они используются для создания объектов ActiveX и Com. Но мне не нужны все навороты связанные с этими технологиями. Хотелось бы по возможности использовать только лишь понятие интерфейса. Он позволяет снять языковой барьер и соответственно организовать обмен данными между модулями и приложением написанных на разных языках. Теоретически это возможно.
Спасибо за ответ.
0
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
20.02.2008, 13:09 | 4 |
так погоди, библиотеки на сях ты с таким же успехом можешь юзать, где угодно, и без понятия интерфейса тут никак... просто не пойму, чем тебя не устраивает стандартное построение твоих библиотек... пиши тогда на визуал студии, там все более углублено, почти все руками делать надо, без автоматизации....
0
|
0 / 0 / 0
Регистрация: 19.02.2008
Сообщений: 9
|
|
20.02.2008, 13:38 [ТС] | 5 |
При многопоточном варианте одна библиотека может потребоваться несколько раз в разных потоках. Идея заключается в том чтобы в разных потоках через размножение интерфейсов помещёных в модуль независимо друг от друга работать с ними. Это всё равно что одну и туже длл для каждого случая переименовывать перед загрузкой что заставит систему смапировать новый её образ. Но такой вариант я не уверен что всегда будет работать + размер модуля может быть разным: например в одном сценарии выполняют работу двадцать модулей и десять из них повторяются на различных этапах сценария. В случае переименования модуля умножай объём занимаемой памяти на 10. А ведь некоторые модули могут весить не мало.
При стандартном построении (работать только через экспортные функции) у нас всегда один интерфейс и соответственно если он занят одним из потоков то другим туда уже не обратится.
0
|
0 / 0 / 0
Регистрация: 19.02.2008
Сообщений: 9
|
|
20.02.2008, 13:50 [ТС] | 6 |
Насчёт вызова - попробую
0
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
20.02.2008, 14:38 | 7 |
многопоточность можно и в длл запихнуть, если на то пошло, просто я не знаю твоей задачи, сложно что-то сказать
0
|
toXXIc
|
|
06.03.2009, 14:22 | 8 |
Позвольте поинтересоваться, разрешился ли как-нибудь сей вопрос? У самого сейчас та же проблема.
|
06.03.2009, 14:22 | |
06.03.2009, 14:22 | |
Помогаю со студенческими работами здесь
8
Фильтр DirectShow. Query Interface выдает E_NOINTERFACE Ошибка "Interface not supported" и документ мимо OleContainer *interface{} в interface{} AS-Interface Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |