|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.01.2014, 01:31 | #1 |
Пользователь
Регистрация: 01.03.2008
Сообщений: 27
|
Windows API и C#
читаю текст как вызвать неуправляемый программный код, как win32 API из C#, и натыкаюсь на такой текст: для того чтобы обратиться к какой-нибудь неуправлямой библиотеке DLL, вы должны преобразовать .NET-объекты в наборы struct, char* и указателей на функции, как того требует язык C.
в связи чем вопрос: почему именно как того требует язык С, а не какой-то другой язык? причем тут язык С? P.S. если можно объяснить подробней, а не одним словом или фразой. спасибо за понимание. |
20.01.2014, 01:42 | #2 | |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Цитата:
Благодарить в репутацию. Проклинать — туда же
|
|
21.01.2014, 00:55 | #3 | |
Пользователь
Регистрация: 01.03.2008
Сообщений: 27
|
Цитата:
что значит , что библиотека написанна на языке С? |
|
21.01.2014, 02:17 | #4 | |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
Цитата:
Помимо этого, для вызова функции из любой DLL, если она принимает какие-либо параметры, ей необходимо их передать в "понятном для неё виде". Также программа должна каким-то образом найти в DLL точку входа в эту функцию. Поэтому при вызове неуправляемого кода требуется преобразование объектов .NET, как того требует язык C. Последний раз редактировалось Streletz; 21.01.2014 в 02:29. |
|
21.01.2014, 02:20 | #5 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
Streletz Автор не про то спрашивает.
|
21.01.2014, 02:34 | #6 | |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
Автор спрашивает:
Цитата:
Про то, что ядро Windows написано на C ему уже ответили до меня. |
|
21.01.2014, 12:23 | #7 | |
Пользователь
Регистрация: 01.03.2008
Сообщений: 27
|
Цитата:
что значит в понятном для нее виде. можете это расшифровать более детально? |
|
21.01.2014, 12:35 | #8 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
собственно эти места и надо расписать. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
21.01.2014, 13:05 | #9 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
ТС: думаю, вам интересно будет прочитать статью о соглашениях вызова функций, в ней как раз описаны способы вызовов функций (в т.ч. Winapi) и передачи параметров/получения результата
Благодарить в репутацию. Проклинать — туда же
|
21.01.2014, 13:56 | #10 |
Пользователь
Регистрация: 01.03.2008
Сообщений: 27
|
почитавши статью и покумекав немного, я кое-что понял. язык программирования характеризуется какими именно типами данных он манипулирует. т.е. если программа написана на языке С или другом языке - это означает, что она манипулирует определенными типами данных, которые поддерживает этот язык, и это закладывается в самих машинных командах.
т.е. если объект языка С# передается, предположим через стек, коду на С , то код на С считает свое количество байт со стека,в соответствие своим типам данных, что будет не корректным, поэтому нужно преобразовывать более высокие типы данных к низким типам. верно я понял? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Windows API | Xme1ez | Помощь студентам | 3 | 23.11.2012 21:01 |
С и Windows API - изменение реестра | Matadora | Помощь студентам | 1 | 09.11.2011 20:16 |
Windows 7 API | Gerzs | Win Api | 2 | 14.12.2009 16:48 |
Ищу книги по Windows API | Malkovich | Свободное общение | 6 | 15.08.2009 15:00 |