Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Можно ли разрабатывать COM компоненты на C? Как это делать на C++/C# я в курсе, но интересует именно C. Общался с разными людьми, искал в google ответ на данный вопрос. Одни пишут, что нельзя, другие - что можно. Одни пишут, что в C интерфейсы можно реализовать посредством структур, в которых, помимо обычных полей, будут присутствовать и указатели на функции (альтернатива методам в C#). Однако меня слегка смущает тот факт, что разные компиляторы могут по разному организовывать выравнивание содержимого структур и возможно, что это будет проблемой для подобного подхода. Это всего лишь предположение. В любом случае, я не нашёл в интернете конкретных примеров по теме. Буду весьма признателен за ссылки на примеры. Спасибо ___________________________________________________________ Британские "учёные" - фундаментальный подход к разной фигне... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 21:21 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 21:38 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
Compositum, Теоретически - можно, и даже не сильно сложно по сравнению с С++. Выравнивание в структурах вообще не проблема - в любом популярном компиляторе можно описать структуру произвольного формата. Практически - вряд ли кому нужно. Я уверен, что если копнуть поглубже, то выяснится что никаких реальных обоснований для написания такого модуля на С нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 21:44 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЯ уверен, что если копнуть поглубже, то выяснится что никаких реальных обоснований для написания такого модуля на С нет. Это я интересуюсь для себя. Мне самому было бы интересно попробовать написать элементарный COM компонент на C. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 21:46 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 21:48 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
Можно ли разрабатывать COM компоненты на C? Да. Как это делать на C++/C# я в курсе, но интересует именно C. Да в общем-то также. Только таблица виртуальных методов там описывается явно, в виде массива указателей на функцию. В IDL задай целевой язык С, а не С++, и получишь... Правда, я никогда не занимался этим. Общался с разными людьми, искал в google ответ на данный вопрос. Одни пишут, что нельзя, другие - что можно. Здрасте, оно изначально разрабатывалось для С. Одни пишут, что в C интерфейсы можно реализовать посредством структур, в которых, помимо обычных полей, будут присутствовать и указатели на функции (альтернатива методам в C#). Нет, там объекты -- структуры, интерфейсы -- массивы указателей на функции. Однако меня слегка смущает тот факт, что разные компиляторы могут по разному организовывать выравнивание содержимого структур и возможно, что это будет проблемой для подобного подхода. Это всего лишь предположение. Гы, OLE расчитано было на РОВНО ОДИН компилятор, точнее -- два. Microsoft C и Microsoft C++. А все остальные либо производители делают бинарно совместимыми с ними (спеки опубликованы), либо компиляторы идут лесом (в части программирования OLE на них). В любом случае, я не нашёл в интернете конкретных примеров по теме. Буду весьма признателен за ссылки на примеры. Не знаю. Inside to OLE может быть? И на последок -- вопрос: а нафига ж тебе делать что-то в OLE на С, а не на С++, когда С++ может всё то, что может и С, и может использовать любую библиотеку С ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 22:36 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
Конечно можно, в sdk даже есть кучка сишных оберток, которые это все дело упрощают. Еще гляньте книжку Дейл Роджерсон - Основы COM, мне очень понравилась в свое время - там по шагам, по сути мы сами реализуем com вместе с автором. Классная книжка. Но, конечно же, для разработки лучше использовать atl - очень все ускоряет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2013, 01:40 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
2 Compositum: CompositumМожно ли разрабатывать COM компоненты на C?Да. Можете почитать исходники Wine (чистый C), там есть реализации COM-интерфейсов. Например, для Direct3D 9: // http://source.winehq.org/source/dlls/d3d9/device.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Как видите, таблица виртуальных методов пишется вручную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2013, 03:21 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
Благодарю всех за ответы. tehKoshЕще гляньте книжку Дейл Роджерсон - Основы COM, мне очень понравилась в свое время - там по шагам, по сути мы сами реализуем com вместе с автором. Классная книжка. Я как раз её и читаю :) Но там, к сожалению, примеры только на C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2013, 09:14 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
Compositum, COM интерфейс вы все равно будете описывать на IDL (interface definition language), а генерировать код для прокси и стабов будете с помощь MIDL. Поэтому прочитайте http://msdn.microsoft.com/ru-ru/library/windows/desktop/aa367300(v=vs.85).aspx, пригодится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2013, 12:07 |
|
||
|
Можно ли писать COM компоненты на C?
|
|||
|---|---|---|---|
|
#18+
CompositumДоброго времени суток. Можно ли разрабатывать COM компоненты на C? Как это делать на C++/C# я в курсе, но интересует именно C. Общался с разными людьми, искал в google ответ на данный вопрос. Одни пишут, что нельзя, другие - что можно. Можно. СОМ не завист ни от языка ни от платформы. Я бы начал с Dispatch интерфейса, как с самого простого и прозрачного в имплементации. Передача данных через него ограничена типом variant. Что для простых компонентов вполне достаточно. На его основе можно легко делать компоненты хоть на ассемблере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2013, 13:50 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38150309&tid=2020453]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 263ms |

| 0 / 0 |
