2009年に、私はFortran DLL(内容は利用できません)をVB.NETアプリケーションに呼び出すという小さなアプリケーションを書いていました。出来た。ただし、コードを再訪する必要があり、Visual Studio Community 2017でコンパイルされている場合、VB.NETアプリケーションが元のソースコードから実行されないことが判明しました。VB.NETからFortranルーチンを呼び出す
Fortran dllの引数は、整数、実数の配列とcharの:VBコード内
SV is a string (array of Fortran characters?)
IV is an array of Fortran integers
RV is an array of Fortran reals
、Iを使用している:
Dim IV(1279) As Integer
Dim RV(15999) As Single
Dim IERR As Integer
Dim SV As New String(" ", 5120)
Dim FileDir As New String(" ", 64)
Call FORT_SUB(SV, 5120, IV(1), RV(1), IERR)
得EXEがクラッシュを呼び出すラインで。構文の要件がわずかに変わっているに違いないと思いますが、今は少し違ってFortranの呼び出しを行う必要があります...
'コール時にクラッシュする 'という表現はあまり説明的ではありません。デバッガでコードを実行すると、例外メッセージは何ですか? – TnTinMn
プログラムとDLLの両方が同じプロセッサアーキテクチャでコンパイルされていますか?例えば64ビットまたは32ビット?プログラムを再コンパイルしてdllにマッチさせてみてください。 –
未知のモジュールで 'System.BadImageFormatException'型の未処理の例外が発生しました。 ファイルまたはアセンブリ 'VBNET.exe'またはその依存関係の1つを読み込めませんでした。このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによって構築され、ロードできません。発生した – Sneezo