![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| kiler4747 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Как передать в функцию из dll(C++) параметры? Как передать int?
функция из dll
cyctle(99999); при вызове возникает ошибка |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
у вас cdecl метод вызова (по умолчанию в c++) - его и укажите в атрибуте:
и название у вашей функции скорее всего будет _cyctle на экспорте - проверьте используя утилиту dumpbin или depends какой-нибудь -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| kiler4747 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
А как возратить указатель на int, wchar_t? Как возвращать строки?
|
|||
|
||||
| kiler4747 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
И как передавать указатели и строки в функции?
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
kiler4747, указатели как IntPtr C# тип, можно, конечно и как int (если у вас x86, см пояснение1).
строки (const wchar_t* const) как string C# тип, с указанием кодировки (посмотрите справку по DllImport). строки wchar_t* const как StringBuilder с заранее выделенным размером wchar_t как char (2 байта) пояснение1: вообще говоря в с++ не определен размер базовых типов данных, определено лишь соотношение bool<=short<=....<=long<=double, но в x86 в windows sizeof(int)=4 = sizeof(void*) -- так что... С т.з. данных указатели в C# особо не котируются, разве что для нативных вещей... Это сообщение отредактировал(а) jonie - 27.5.2011, 22:10 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| kiler4747 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
А как передавать многомерные массивы в функцию?
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
kiler4747, как byte[] ? В C++ многомерные массивы хранятся в непрерывных блоках памяти, и, по большому счету всем пофиг сколько у них измерений - блок-то один, так что можно его рассматривать как одномерный. Ну и передавать размеры не забывать.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| kiler4747 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Что мне нужно исправить, чтобы программа работала? Размер массива я знаю.
dll
|
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
kiler4747, вам копать в строну [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = ***)]
Это сообщение отредактировал(а) jonie - 9.6.2011, 17:33 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| kiler4747 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.2.2011 Репутация: нет Всего: нет |
Не могли бы вы написать пример? У меня возник ещё вопрос: как из функции С++ вернуть массив в С# или как передать указатель на массив в функцию C++ и чтобы можно было изменять этот массив.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |