[英]Interfacing octave with C#
我在Octave開發了一個程序,我想添加一個GUI層。 我想在C#中創建一個可以分發的可執行程序,但是想要堅持使用Octave的線性代數結構,而不必自己實現它們。 特別是,我想要基本的矩陣,向量運算和優化函數(如fminunc
和fmincg
)。
實現這一目標的最佳方法是什么? 可能是合適的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.