Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2014, 17:06   #1
iukash
учу английский...
Форумчанин
 
Аватар для iukash
 
Регистрация: 04.04.2009
Сообщений: 480
По умолчанию Работа со структурой в c# коде, возвращаемой из dll c++

В общем есть функция в dll на c++, которая возвращает указатель на структуру.

Цитата:
c++
//структура
typedef struct {
double a;
double b;
double c;
}StrA;
//в dll функция func которая возвращает указатель на эту структуру *StrA
//в тестовом проекте на c++ принимаю ее следующим образом
StrA (*stra);
stra=(StrA *)GetProcAddress((HMODULE)handleLib , "func");
Так все работает, но как получить этот указатель в коде c# я не знаю. Пишу так

Цитата:
c#
//структура
[StructLayout(LayoutKind.Sequential)]
public struct StrA
{
public double a;
public double b;
public double c;
}
//Экспорт функции из dll
[DllImport("dll_c.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern StrA func();
И при вызове функции func() вываливается accessviolationexception, что в принципе и понятно, т.к. я пишу, что func() возвращает структуру, а не указатель на него.
"Мы можем что-то изменить и своими силами..."
"Начнешь с себя, примером ближнему поможешь..."
iukash вне форума Ответить с цитированием
Старый 15.01.2014, 17:20   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://stackoverflow.com/questions/1...turns-a-struct
может наведет на мысли.
и возвращаете вы саму структуру.

кстати, в соглашении вызова уверены?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.01.2014, 17:30   #3
iukash
учу английский...
Форумчанин
 
Аватар для iukash
 
Регистрация: 04.04.2009
Сообщений: 480
По умолчанию

Пепел Феникса спасибо огромное за ссылку! Разобрался, все работает!
"Мы можем что-то изменить и своими силами..."
"Начнешь с себя, примером ближнему поможешь..."
iukash вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со структурой SorryHelpMePLZ C/C++ Базы данных 1 02.06.2013 23:33
Работа со структурой. С++ Kolupaev Помощь студентам 3 08.02.2013 11:45
работа со структурой в с++ kewa Помощь студентам 0 07.12.2012 21:42
работа со структурой Кристинка89 Общие вопросы C/C++ 1 25.03.2011 21:43
Использование DLL со структурой описанной на C++ MojoDS Общие вопросы Delphi 1 14.10.2010 20:07