.net — Есть идеи, как интегрировать код F # с родным C ++?

Я хочу использовать некоторый код F # на родном C ++. Точнее, я хочу написать некоторые структуры данных на F #, а затем использовать их в своем коде C ++.

Я понятия не имею, как я могу смешать управляемый F # с неуправляемым C ++. Как я могу создать клеевой слой?

6

Решение

Одним из способов является создание сборки в C++/CLI который будет смешанным режимом сборки, который может ссылаться на ваш F# Одновременная сборка и экспорт собственных символов, поэтому они могут быть позже использованы в собственной библиотеке c ++. Этот вариант самый универсальный. Вы можете использовать этот метод для создания «мостов», которые работают в обоих направлениях.

Один подход, который мне нравится использовать, когда я делаю это (и я сделал это для включения C #, графического интерфейса на основе Wpf внутри другого нативного приложения c ++ / mfc), заключается в создании простых привязок C, например:

//C++
void Method1() { Bridge::Method1(); }
void Method2(int param, int* nativeArray)
{
array<int>^ managedArray = marshalArray();
Bridge::Method2(param, managedArray);
}
....

//C#
static class Bridge
{
public static void Method1() { ... }
public static void Method2(int param, int[] ar) { ... }
}

Это в основном позволяет вам сохранить C++/CLI Обертка настолько мала, насколько это возможно, используя весь код в управляемой библиотеке, а также позволяя вам использовать эту библиотеку из C и даже динамически загружать ее с LoadLibrary(),

Кто-то может сказать, что это излишество (хотя вы пишете немного кода для сантехники дважды).

Если вы хотите сделать что-то сумасшедшее, вы также можете попробовать экспортировать отдельные методы из себя F# библиотека, что делает ее сборкой смешанного кода, как описано в статье Простой метод экспорта DLL без C / CLI

8

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector