我已经用Octave开发了一个程序,我想在其中添加一个GUI层。我想用C#创建一个可以分发的可执行程序,但又想坚持使用Octave的线性代数结构,而不必自己实现它们。特别是,我想要基本的矩阵,向量运算和优化函数(如fminunc和fmincg)。
实现这一目标的最佳方法是什么?也许是合适的C#线性代数库?
发布于 2011-11-06 21:21:27
有很多用于c#的数学库。Math.NET Numerics似乎是一个很好的免费替代方案。也有商业实现。
另一种选择是使用Process.Start调用Octave并解析输出。这使您不必重写计算,但您需要能够将Octave捆绑到您的应用程序中。如果你想紧密地混合c#和数学代码,这将是一个相当复杂的过程,但是如果你的数学代码是一个只有一组输入和一组输出的大型计算,那么它可能是一个很好的选择。
发布于 2011-12-17 20:28:03
我已经为我的C#项目编写了一个Octave C#包装器:
http://code.google.com/p/adastra/source/browse/trunk/src/Adastra/Tools/OctaveController.cs
这是一个示例用法:http://code.google.com/p/adastra/source/browse/trunk/src/Adastra/Algorithms/OctaveLogisticRegression.cs这是Logistic回归分类器的Octave和C#混合实现。
发布于 2012-05-03 15:11:56
构建独立应用程序:http://www.gnu.org/software/octave/doc/interpreter/Standalone-Programs.html#Standalone-Programs
我有一个类似的问题,那就是为C#创建一个.dll我一直在寻找一种方法来做这件事,现在我还没有能够找到指令或一个简单的方法来做它。这与其说是一个问题,不如说是一个正在进行的项目,但我肯定会接受任何答案或帮助!:)
我计划在这里跟踪我的努力,所以在最后,这应该会成为一个页面,让人们找到如何将八度编译成.dll (总是假设这是可能的)
所以:
-I正在使用VS2010
-I从MS VS2010为八度音阶编译的二进制文件开始,假设这会更接近。
-I在VS中创建了一个项目,并使用了以下代码:
#include <iostream>
#include <octave/oct.h>
#include <octave/octave.h>
#include <octave/parse.h>
int main(int argc, char* argv[])
{
std::cout<<"hello world"<<std::endl;
char a[900];
std::cin>>a;
return 0;
}-The代码当然不会找到倍频程的库,所以我添加了它们,例如,
C:\Octave\Octave-3.6.1-VS10\lib\octave\3.6.1;C:\Octave\Octave-3.6.1-VS10\include\octave-3.6.1;C:\Octave\Octave-3.6.1-VS10\include;$(VCInstallDir)include;...要包含目录(右键单击项目-->属性)
现在我得到了
Error 73 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall octave_value::~octave_value(void)" (__imp_??1octave_value@@QAE@XZ) referenced in function "public: void * __thiscall octave_value::`vector deleting destructor'(unsigned int)" (??_Eoctave_value@@QAEPAXI@Z) ...\Projects\cppap32\cppap32\main.obj cppap32这基本上意味着它无法找到octave_value..。通过使用dumpbin.exe,我们可以看到它需要同时具有octave.lib和octinterp.lib
它现在可以编译...:)
下一步创建一个.dll ...
备注:
要检查.lib导出的内容,请执行以下操作:
dumpbin.exe /exports C:\Octave\Octave-3.6.1-VS10\lib\octave\3.6.1\octave.lib相关链接:
其他网站上类似的开放问题:http://www.daniweb.com/software-development/cpp/threads/297336/gnu-octave-for-c-how-to-start
https://stackoverflow.com/questions/8026951
复制相似问题