簡體   English   中英

連接八度音程與C#

[英]Interfacing octave with 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 <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;
}

- 代碼當然不會找到octave庫,所以我添加了它們,例如,

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。 這是鏈接: www.xoctave.com

也許那里的人可以為你的問題找到解決方案。

我最近需要這個功能用於我的寵物項目,所有現有的解決方案都不是用戶友好的或只是沒有工作。 我為此專門創建了一個開源的,跨平台的.NET標准庫。 我希望它能在GitHub上省去一些麻煩 - Octave.NET

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM