У меня есть проблема управления, которую я решил с помощью интеллектуального контроля модели (MPC). Я задал проблему в MATLAB и использовал FORCES http://forces.ethz.ch/ для ее решения. FORCES - это веб-сервис от ETH Zürich, который генерирует бесплатный ANSI-C код без библиотеки. Для тестирования кода они предоставляют скрипт для компиляции c-кода в файл MATLAB .mex. Все это прекрасно работает.Создание библиотеки dll из сгенерированного кода c
Теперь я хочу использовать эту функцию в моей программе Windows Forms C#. Чтобы использовать C-код в C#, я должен скомпилировать c-код в dll, а затем использовать P/Invoke? Или есть другой способ? Как я могу скомпилировать его? Могу ли я просто использовать код, как есть, или мне нужно его отредактировать (добавив __declspec или что-то в этом роде)? Можно ли скомпилировать dll непосредственно из MATLAB?
Файлы .c и .h можно найти на моей домашней странице: http://n.ethz.ch/~rehofman/download/.
Я бегу 64bit Windows 7, MATLAB 2013b, Visual Studio 2012.
У меня есть MinGW уже установлены, если это необходимо.
EDIT:
Ok здесь более конкретный вопрос: У меня есть функция (myMPC_solve), написанная на с-кодом, который я хочу, чтобы позвонить из C#. Каков наилучший способ сделать это? Аргументы и типы данных находятся в файле .h.
PInvoke - единственный способ. – Bauss
Вы задали много вопросов в этом посте, много способов ответить на некоторые из них, но в отношении них: _Как я могу скомпилировать его? _, *** [ЗДЕСЬ] (http://www.mingw.org/wiki/sampleDLL) *** - это ссылка, показывающая, как вы можете скомпилировать. Что касается _P/Invoke_, то существует много *** [других ссылок] (http://msdn.microsoft.com/en-us/library/aa288468%28v=vs.71%29.aspx) *** (здесь один), показывающий, как использовать стандартную DLL (или как Microsoft называет ее _unmanaged code_) – ryyker
Кстати, ваш вопрос интересен, и он показывает, что вы сделали какую-то работу, но кому-то будет очень непросто помочь ответьте на ваши вопросы, потому что они довольно широкие, а не самодостаточны. взгляните на эту ссылку в отношении этих комментариев: *** [SSCCE] (http://sscce.org/) *** – ryyker