- - PR -
vb2005 の文字配列を Fortran に渡す方法につきまして、
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-11-30 13:56
初めまして、おせわになります。
Visual Fortran 10 でDLLを作成しvb2005 から Callするプログラムを作ろうとしています。 そこで、vb2005からFortranに文字配列を渡したいのですが、文字配列だけ受け渡すことが出来ません。それ以外、文字列・実数・整数や配列は問題なく渡せています。 文字配列を受け渡すことは不可能なのでしょうか? どうぞよろしくお願いいたします。 | ||||||||
|
投稿日時: 2008-11-30 23:49
ここにあるのが参考になると思いますが、如何でしょう。
http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/pg/pg18_05_01.htm | ||||||||
|
投稿日時: 2008-12-02 17:16
にーさん サイトのご案内ありがとうございました。
その後、色々と調べ、また試してみました。どうも、配列は渡されているようですが、 文字配列の1つ目以外の文字列が異なってしまいます。以下に示します例ですと'A’ だけが渡され、'B'と'C'は化けてしまいます。原因が分かりましたらご指導ください。 よろしくお願いいたします。 Declare Sub FortString1 Lib "..\\..\\Fcall\\Debug\\FCALL.DLL" (ByVal S As String, ByRef L1 As Integer) 'VisualBasicの部分 Dim S(3) As String S(1) = "A" S(2) = "B" S(3) = "C" Call FortString1(S(1), S.Length - 1) !VisualFortranの部分 Subroutine FortString1 (S,L1) !DEC$ ATTRIBUTES DLLEXPORT, ALIAS : "FortString1" :: FortString1 CHARACTER S(L1) RETURN END | ||||||||
|
投稿日時: 2008-12-02 17:52
この部分ですが、ByVal S As String の ByVal を ByRef にしてみたらどうなりますか? | ||||||||
|
投稿日時: 2008-12-02 18:08
Tramさん どうもありがとうございます。
早々に試してみましたところ、文字化けしてしまい、 毎回その文字化けの文字が変わってしまいます。 なかなか、難しいです!文字配列というのは特殊なのでしょうか? | ||||||||
|
投稿日時: 2008-12-02 18:25
ダメでしたか。失礼しました。 配列渡しの例を見ると以下のように定義されています。
VB6などではByValやByRefを明記しない場合はByRef扱いだと記憶していたので もしかしてと思いましたが、外していましたね。 というか、そもそもACUさんはVB2005からの呼び出しでしたね…よく見ておらず失礼しました。 |
1