![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| sashara |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 26.12.2008 Репутация: нет Всего: нет |
У меня есть dll-библиотека, написанная на С. С ней в комплекте идет *.lib и *.h файлы.
Вопросы: 1. В *.h файле объявлено примерно 1000 констант, которые я хочу использовать из С#. Как мне правильно это реализовать ?
Должен ли я вручную их переписывать ? Или это делается другим более хитрым способом ? или хитрого способа нет и все-таки вручную ? 2. Как правильно перегнать из *.h перечисление из C++ на С# ?
3. Как переписать для C# вот такую структуру:
4. Какие существуют ограничения на маршалинг структур и перечислений ? |
||||||
|
|||||||
| archeg |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 6.1.2007 Где: Киев Репутация: 11 Всего: 27 |
Я не шарю спп, но могу точно сказать что #define-ы прийдеться переписывать. Ибо ты плохо читал доки по спп. Ибо дефайны - не константы. Это макрокоманды. Они выполняються на этапе компиляции - простая подстановка вместо const1 числа 40 и т.д. Значит в конечных дллках плюсов их уже просто не будет.
Для констант думаю в плюсах есть ключевое слово const P.S. Тебе надо использовать дллину как либу, или переписать ее? Я что-то нпонял Это сообщение отредактировал(а) archeg - 26.12.2008, 10:46 -------------------- ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru) Дядька всегда можно спросить в аське, если не задалбывать - не откажет И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои ;) |
|||
|
||||
| sashara |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 26.12.2008 Репутация: нет Всего: нет |
Мне нужно написать "обертку" над этой библиотекой. Мы делаем проект на платформе на платформе .NET и эта библиотека будет в нем использоваться. PS: мне предлагали писать на C++ .NET - как думаешь, так лучше будет сделать ? |
||||
|
|||||
| archeg |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 6.1.2007 Где: Киев Репутация: 11 Всего: 27 |
хз, думаю что не важно. Он там как-то умеет объеденять менейдж и анменейдж код, но мы уже живем в каком веке? Как по мне - то либо пишешь на анменейдж что-то такое что не напишешь на менейдж, либо только на менейдж -------------------- ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru) Дядька всегда можно спросить в аське, если не задалбывать - не откажет И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои ;) |
||||||
|
|||||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
sashara, а зачем что-то переписывать????
если у вас есть скомпиленный Native модуль - так просто дёргайте его через DllImport... -------------------- СУВ, Partizan. |
|||
|
||||
| sashara |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 26.12.2008 Репутация: нет Всего: нет |
хы, а чем дергать структуры, перечисления, константы, дефайны из *.h файла ? Там такие функции, что используются в основном свои типы данных. |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
// тоже не знаю плюсов
1. структуры, перечисления и константы придётся переобъявить в шарповом варианте 2. в шапре это будет обычный enum
в extern-декларации функций можно указывать параметром этот enum, он как целое число замаршалится 3. скорее всего byte[SomeConst] 4. там много всяких потенциально неприятных штук, но в большинстве случаев всё работает без использования хитрых атрибутов |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |