一种方法是创建一个程序集,C++/CLI其中将是混合模式程序集,可以引用F#程序集并同时导出本机符号,因此它们可以在以后的本机c ++库中使用.此选项是最通用的.您可以使用此方法创建双向工作的"桥梁".
我喜欢在我这样做时使用的一种方法(我已经这样做,包括C#,基于Wpf的GUI在另一个本地,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) { ... }
}
Run Code Online (Sandbox Code Playgroud)
这基本上允许您保持C++/CLI包装器尽可能小,利用整个代码到托管库,以及允许您从C使用此库,甚至动态加载它LoadLibrary().
有些人可能会说这是一种矫枉过正(你确实写了一些管道代码两次).
如果你想做一些疯狂的事情,你也可以尝试F#直接从你的库中导出单个方法,基本上使它成为一个混合代码程序集,如文章中没有C/CLI的dll导出的简单方法中所述
| 归档时间: |
|
| 查看次数: |
2089 次 |
| 最近记录: |