我有一个控制问题,我使用模型预测控制 (MPC) 解决了这个问题。我已经在 MATLAB 中陈述了问题并使用了 FORCES http://forces.ethz.ch/解决它。 FORCES 是 ETH Zürich 的一项 Web 服务,可生成无库的 ANSI-C 代码。为了测试代码,他们提供了一个脚本来将 c 代码编译为 MATLAB .mex 文件。这一切都很好。
我现在想在我的 C# Windows 窗体程序中使用这个函数。要在 C# 中使用 C 代码,我必须将 C 代码编译为 dll,然后使用 P/Invoke?或者还有其他方法吗?我该如何编译它?我可以按原样使用代码还是必须对其进行编辑(添加 __declspec 或类似的东西)?是否可以直接从 MATLAB 编译 dll?
.c 和.h 文件可以在我的主页上找到:http://n.ethz.ch/~rehofman/download/ .
我运行 64 位 Windows 7、MATLAB 2013b、Visual Studio 2012。
如果需要,我已经安装了 MinGW。
编辑:
好的,这是一个更具体的问题:我有一个用 c 代码编写的函数 (myMPC_solve),我想从 c# 调用它。最好的方法是什么?参数和数据类型都在 .h 文件中。
最佳答案
您可以执行以下任一操作:
- 将 C 代码编译为 DLL,并使用 p/invoke 将其包含在内。
- 将 C 代码编译成 C++/CLI 混合模式程序集,将功能包装在 ref 类中,并从 C# 中使用它
- 用 COM 服务器包装 C 代码并从 C# 使用它。
- 将代码留在 MATLAB 中并使用 C# 中的代码。 C# 代码可以通过多种方式使用 MATLAB 代码。
而且我确信除了上述之外还有其他选择。
现在,如果您希望获得有关下一步操作的详 segmentation 步说明,很抱歉让您失望了。你问了一个宽泛的问题,我已经给了你一个相应宽泛的答案。接下来您应该做的是选择上述选项之一并实现它。当您遇到困难时,请随时提出更具体的问题。
关于c# - 从生成的 C 代码创建 dll 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20331644/