|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.01.2010, 23:07 | #1 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
DllImport + C/C++
Добрый день.
Возможно подобные темы звучали (я прошел по поиску, но мало нашел подходящего). Вообщем сразу к сути, имеем следующее: Код:
Код:
1. Собирается проект успешно 2. Запуск происходит без проблем 3. Вызов данной функции происходит безболезненно 4. Результата ноль Попытался из под VS (кода самой .dll) приатачиться к exe и из exe попытаться запустить .dll (функцию), но в саму функцию в .dll управление так и не передалось. Почему IntPtr а не void* ? Ну попытался я void*, пишет нужно использовать только с unsafe, объявил, а тут пишет нужен фиксированные размер или что-то подобное. Может есть корректный способ объявить данную функцию ? |
05.01.2010, 15:51 | #2 |
Регистрация: 19.03.2009
Сообщений: 8
|
ммм... можешь в С коде сделать System::IntPtr ptr и создать его из void*...
Точно не помню как я это делал но писал враппер на длл, просто сделал его мэнэджед кодом создавал IntPtr и возвращал его... Тут походу проблема в несовместимости... когда ты возвращаешь blenddata* ты возвращаешь указатель... А объявил в c# как IntPtr... В с# он хранит эит указатели, но доступ к ним по функции Handle() или ToHandle() или ToPointer() .. Ну там на месте разберешься ) |
05.01.2010, 18:15 | #3 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Спасибо за отклик. Примерно 20 миг. после создания темы разобрался в принципе все ок и так было, просто stdcall еще поставил, ну и там функция у меня .dll немного не корректно написана (ее код) что ей приходилось возращать null, поэтому и думал что как будто ничего не происходит. А void* и IntPtr так и оставил, все с ними работает на ура.
|