fortran與c混合編程
❶ 請問,這個c語言與Fortran混編的函數是什麼意思
CS_PROCF應該是C的一個宏,你可以查一下這個宏的定義是什麼。
應該是把後面的兩個參數 caltri, CALTRI 以一定的格式組合成fortran的函數名。
一般來說 在C中調用fortran,聲明後可以直接調的。
❷ 問Fortran 和C語言混編如何編寫Makefile
您可以下載編譯器與編譯器直接編譯就好了。 。 。的前提是要編譯的源代碼,
❸ 如何在C語言中調用FORTRAN生成的DLL里的函數
C語言和Fortran混合編程藉助於Fortran生成的DLL進行(採用C默認的傳址方式進行函數參數傳遞)方法和實例:
1.Fortran
生成DLL
新建Fortran
DLL程序test1.f
添加如下代碼:
! test1.f90
!
! FUNCTIONS/SUBROUTINES
exported from test1.dll:
! test1 -
subroutine
!示例沒有返回值的子常式
subroutine
test1(a,b)
! Expose subroutine test1 to
users of this DLL
!
!DEC$ ATTRIBUTES
C,DLLEXPORT::test1
! Variables
! Body of
test1
integer a,b
integer sum
sum=a+b
return
end subroutine
test1
!示例有返回值的整數四則運算
!兩數相加
function
add(a,b)
implicit none
!DEC$ ATTRIBUTES
C,DLLEXPORT::add
integer
a,b,add
add=a+b
return
end
!兩數相減
function
abstract(a,b)
implicit none
!DEC$ ATTRIBUTES
C,DLLEXPORT::abstract
integer
a,b,abstract
abstract=a-b
return
end
!兩數相乘
function
multiply(a,b)
implicit none
!DEC$ ATTRIBUTES
C,DLLEXPORT::multiply
integer
a,b,multiply
multiply=a*b
return
end
!兩數相除
(需要添加考慮被除數是否為0以及能否整除的判斷)
function
divided(a,b)
implicit none
!DEC$ ATTRIBUTES
C,DLLEXPORT::divided
integer
a,b,divided
divided=a/b
return
end
編譯後生成test1.dll,test1.obj等文件。其中這兩個文件是我們在VC中調用所需要的。
❹ C#和FORTRAN混合編程中,如何合理設置進度條 做的是一個科學類計算軟體,C#做界面,FORTRAN做演算法內核。
多線程步考慮安全其實很簡單的,如果你繼續學vc遲早是要接觸的。我把用進度條的程序給你個框架代碼你自己填;
1、設計一個帶有進度條的對話框,把對話框用一個類CProgressDlg 來管理(這個你會吧),進度條增加一個成員變數m_progress;
2、定義一個多線程函數DWORD WINAPI ThreadReadFile (CProgressDlg *pDlg)(如何聲明函數你應該會),函數實體裡面就是具體讀取文件的代碼,先取得文件的大小,用這個除一個整數設置進度條的最大值,文件大了,分一小塊一小塊的讀,比如1024K,這樣就好插入對進度條的操作,每讀一塊就pDlg->m_progress.SetPos(progressStep+1);怎麼分?你自己看MSDN。文件讀完後在pDlg->PostMessage(WM_CLOSE);AfxMessageBox("文件已讀完!");發送消息關閉主線程的對話框結束工作。
3、在主線程其實就是你的主程序里先調用多線程函數,然後產生對話框;
[code=C/C++][/code]
CProgressDlg *pdlg=new CProgressDlg;//注意:一定要把對話框的Visable選上才能顯示控制項;
HANDLE m_Thread; //線程句柄
DWORD threadID;
//AfxBeginThread(ThreadReadFile ,NULL,THREAD_PRIORITY_NORMAL,0,0,NULL);
m_Thread=CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE)ThreadReadFile ,(LPVOID)pdlg,0,&threadID);
pdlg->DoModal();//產生進度條對話框,這個對話框由你的線程來結束,否則一直有。
❺ c語言和fortran語言可以結合編程嗎
可以。如 軍酷兒所說「Fortran做成DLL動態庫格式,在C中直接調用就行了」。
建議看一下彭國倫老師的fortran95程序設計一書
❻ FORTRAN/C++混合編程中字元串的傳遞問題
C 語言這樣調用
extern "C" {int _stdcall FACT (int n,char *,int len);}
FACT(7,string,strlen(string))
❼ 用vs2008和ivf11進行c和fortran的混合編程,出現lnk2019錯誤
看fortran代碼,有沒有定義的變數或是有些變數在某個部位寫錯了,這需要你重新檢查一遍,細心一點找出來改了就ok了
❽ 請教下64位下Fortran和C混編應該使用哪種編譯器
IVF現在不支持直接同一工程的混編,需要分開兩個工程。
如果還有問題,請告知具體提示。你的 IVF 版本號。
❾ vs2013如何實現C與Fortran混合編程
方法一,使用obj
創建兩個工程。其中一個 C ,其中一個Fortran
把被調用的工程編譯(但不鏈接),得到一個obj文件
把 obj 文件添加到需調用的工程中。鏈接。
方法二,使用lib
創建兩個工程。其中一個 C ,其中一個 Fortran(被調用的創建為靜態庫 lib)
把被調用的工程編譯,鏈接,得到一個 lib文件
把 lib文件添加到需調用的工程中。再次鏈接。
❿ 我看了你的「請教下64位下Fortran和C混編應該使用哪種編譯器 」,請問在VS2008里怎麼編譯C+FORTRAN的程
VS2008是不能直接編譯Fortran的,你安裝的是intel fortran的編譯器嗎?如果是的話,VS2008編譯環境不支持VC和intel fortran的混編,你需要把其中一種語言打包成.dll的庫文件再在另一種語言中調用它。.dll的具體生成過程網上你可以搜索到不少。
