连接八度音程与C#

我在Octave开发了一个程序,我想添加一个GUI层。 我想在C#中创建一个可以分发的可执行程序,但是想要坚持使用Octave的线性代数结构,而不必自己实现它们。 特别是,我想要基本的矩阵,向量运算和优化函数(如fminuncfmincg )。

实现这一目标的最佳方法是什么? 或许适当的C#线性代数库?

c#有很多数学库。 Math.NET Numerics似乎是一个很好的免费替代品。 还有商业实施。

另一种方法是使用Process.Start调用Octave并解析输出。 这样可以避免重写计算,但是您需要将Octave与应用程序捆绑在一起。 如果你想紧密混合c#和数学代码,这将是一个非常复杂的,但如果你的数学代码是一个大的计算,只有一组输入和一组输出,它可能是一个很好的选择。

我为Adastra项目编写了一个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#实现。

要构建一个独立的: http : //www.gnu.org/software/octave/doc/interpreter/Standalone-Programs.html#Standalone-Programs

我有一个类似的问题,就是为C#创建一个.dll我一直在寻找一种方法来做这件事现在,我一直无法找到指令或一个简单的方法来做到这一点。 这是一个正在进行的项目,而不是一个问题,但我肯定会得到任何答案或帮助!:)

我打算在这里跟踪我的努力,所以最后这应该成为一个页面,让人们可以找到如何将八度音译成.dll(总是假设这是可能的)

所以:

– 我正在使用VS2010

– 我开始使用MS VS2010编译的八进制二进制文件,假设这将更接近。

– 我在VS中创建了一个项目并使用了以下代码:

 #include  #include  #include  #include  int main(int argc, char* argv[]) { std::cout<<"hello world"<>a; return 0; } 

– 代码当然不会找到octave libs,所以我添加了它们,例如,

 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

也许你可以看看Xoctave。 这是为Octave编写的GUI。 这是链接: http://www.xoctave.com

也许那里的人可以为你的问题找到解决方案。

我最近需要这个function用于我的宠物项目,所有现有的解决方案都不是用户友好的或只是没有工作。 我为此专门创建了一个开源的,跨平台的.NET标准库。 我希望它能在GitHub上省去一些麻烦 – Octave.NET