![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| nginx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 20.6.2009 Репутация: нет Всего: -3 |
Добрый день,
Меня беспокоит след. проблема: В C# существует возможность использования неуправляемого кода ( unmanaged code ), и данная возможность предоставленна для совмещения управляемого и неуправляемого кода. К примеру, насколько я понял, Silverlight написан на C++/C# ( да и многое другое, что есть в дотНЕТе ), как раз, в данном случае, группа разработчиков, которая занимается разработкой Silverlight использует данный прием. Хотелось бы узнать на практике, на самом банальном примере, как можно сделать совместную работу unmaned С++/C# ( если мы не Viusal C++ ( C++\CLI ), а к примеру GCC-комплиятор используем ). Если честно немного не понимаю, как это можно совместить. Просьба не ругать меня, я только учусь и хочу просто вникуть в теорию =) Ну давайте, приведем простейший код с неуправляемым кодом на C#:
Скомпилируем с опцией /unsafe. Указатель - это переменная, которая хранит адрес других переменных. Вернемься, к C++/C#, допустим в C++ я создал перменную (int)z , и задам ей значение 100. Пропущу через, GCC С++ программу, которая выводит значение этой переменной. Как я могу получить адрес данной переменной, и взять ее значение в С# и вывести через Console.WriteLine(); ? Или взять адрес переменной в программе, под управлением CLR , и использовать в С++ программе ( которую скомпилировал, не из Visual C++ ). PS: просьба не ругать =) только учусь и познаю программирование еще много не знаю, просьба , если написал глупость нормально разобъяснить Заранее спасибо, Олег Это сообщение отредактировал(а) Partizan - 18.10.2009, 16:31 |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
nginx, слишком много пытаешься охватить.
Вызов методов которые где-то написаны на C++ из C# - это не "неуправлемое программирование", это просто взаимодействие с неуправляемым кодом, для которого есть куча классов в System.Runtime.InteropServices. Решение твоей задачи: 1. Найди как создать dll на C++/GCC 2. Сделай в этой dll экспортируемый (dllexport) метод, который вернет значение, гм, переменной 3. Найди как в C# (из управляемого кода) вызывать методы из неуправляемой dll (посмотри DllImportAttibute) |
|||
|
||||
| nginx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 20.6.2009 Репутация: нет Всего: -3 |
Спасибо за качественный ответ! =)
Буду работать над этим, о результатах расскажу позже =) |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |