• 締切済み

CとFORTRANのリンクについて

C/C++(MAIN)とFORTRAN(SUB)のリンク時エラーの対応策をご教授願いたい 環境(WIN2000/Visual Studio .NET 2003統合環境/IntelFortran9.0/にて FORTRAN(SUB)をLIBとして、C/C++プロジェクトにてリンクしようとして 参照エラーが多発する  ▼問題のリンクエラーメッセージ--------------------------------- error LNK2019: 未解決の外部シンボル _for_emit_diagnostic が関数 _input で参照されました。 同上 _for_open が関数 _input で参照されました。 同上 _f_ldnint_val が関数 _ransu で参照されました。 その他、同上エラーが多発 -------------------------------------------------------------- 多分、FORTRAN側のライブラリ関係が、Cリンカーに設定できていないのでは と推測し検討中だが、手がかりがつかめない状態です 何かヒントでもあれば幸いです。

みんなの回答

  • chirubou
  • ベストアンサー率37% (189/502)
回答No.1

Windowsユーザではないので見送っていたのですが、回答がないようなので。 多分、C/C++からFortranをライブラリとして呼び出しはできないと思います。というのはFortranのライブラリはMAIN(だったっけ?)で(暗黙に)初期化されていることを仮定している事が多いからです。Cは基本的に書いてある事しかしないので、FortranからCの関数を呼び出すことは可能だと思います(C++は同様の理由でダメ)。少なくともLinuxでは経験ありです。 ただし、引数の受け渡しが全てポインタになる、とか関数名の最初だか最後だかにアンダースコアが(Fortranによっては2つ)付く、といった点に注意が必要です。

tigersv1
質問者

お礼

chirubouさん ありがとうございました 初めて投稿したのですが、海に流したボルトレターに返信がきた気分で 非常にありがたい気分です さて質問の件ですが、やっと見つけました 質問には詳しく表記しませんでしたが, 開発環境は  Visual Studio .NET 2003統合環境の1ソリューションに  C/C++プロジェクトとFプロジェクト(StaticLib用)を統合しています  問題は、USER作成のFortranのLibを Cのリンカーでリンクするときに、  IntelFortran9.0の付属ライブラリが認識できない(パスが通っていない)  でした。(どこをどう設定すればいいのかが判らなかった)  ・Fプロジェクトのプロパティにて   Fortran/Libraies/Disable Default Library Search Rules を[No] に設定   (プロジェクト作成時に、Library Setteingメニューで出来る)   ・Cプロジェクトのリンクプロパティにて   リンカ/全般/追加ライブラリディレクトリ に   IntelFortran9.0のLIBフォルダを設定   さらに、USER作成FortranLib名を追加ライブラリに設定でした なんとか、質問のLNKエラーはなくなりました が 新たな問題がでてきました、少し悩んでみます 心やさしい回答ありがとうございました     

関連するQ&A

専門家に質問してみよう