コンパイルするには? – プログラミング – Home

通知
すべてクリア

コンパイルするには?


たけし
 たけし
(@たけし)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

#include f2c.h
上述のヘッダファイルを含むものをVC++6.0をもちいて 
コンパイルするにはどのようにしたらよろしいですか?
ご教授ください。宜しくお願いします。


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

どんなヘッダーファイルを含んでいても、
メニューの「ビルド」-「コンパイル」を選べばコンパイルできます。

エラーが出て困っているという意味でしたら、
そのエラーを提示していただかないと対処法が分かりません。


返信引用
たけし
 たけし
(@たけし)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

返信有難うございます。
インクルード ファイルがオープンできません。というエラーが出てしまいます。
このヘッダファイルはFORTRANとCの言語を結びつける役割を果たしていると思います。
このヘッダファイルをVCで用いるにはどのようにしたらよろしいですか?


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

ヘッダファイルf2c.hはどこかに存在するのでしょうか?
もしないなら、#include f2c.hと書いた人に問い合わせるのが一番です。

ただ、f2cというのは、Fortran から C へ、ソースファイルを自動で
変換する(らしい)プログラムと同名ですので、そのプログラムで
使っているヘッダファイルかもしれません。ベル研究所からDL
できると思います。必要ならこっちの線から調べてください。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

ヘッダーファイルのある場所を指定していますか?

VC++6.0の場合、
「プロジェクト」-「設定」の「C/C++」タブで、カテゴリ「プリプロセッサ」を選んで
「インクルードファイルのパス」に設定します。


返信引用
たけし
 たけし
(@たけし)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

たいちろうさん有難うございました。
頑張ってみます。


返信引用
たけし
 たけし
(@たけし)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

長々と申し訳ないです。
やはりコンパイルができないで皆様のアドバイスをお聞きしたいです。
以下がコンパイルしたいソースです。
何かお気づきの事がありましたらご教授していただければ嬉しいです。
宜しくお願いいたします。
/* Dft8pt.f -- translated by f2c (version 19951025).
You must link the resulting object file with the libraries:
-lf2c -lm (in that order)
*/

#include f2c.h

/* Table of constant values */

static integer c__1 = 1;

/* PROGRAM DFT */
/* Main program */ MAIN__()
{
/* Format strings */
static char fmt_100[] = (f5.0);
static char fmt_200[] = (3f8.3);

/* System generated locals */
integer i__1, i__2;
real r__1, r__2;
olist o__1;
cllist cl__1;

/* Builtin functions */
integer f_open(), s_rsfe(), do_fio(), e_rsfe(), f_clos();
double cos(), sin(), sqrt();
integer s_wsfe(), e_wsfe();
/* Subroutine */ int s_stop();

/* Local variables */
static real a[11], b[11];
static integer i__, j, k, n;
static real p, x[11], y;

/* Fortran I/O blocks */
static cilist io___2 = { 0, 1, 0, fmt_100, 0 };
static cilist io___11 = { 0, 6, 0, fmt_200, 0 };

n = 8;
o__1.oerr = 0;
o__1.ounit = 1;
o__1.ofnmlen = 10;
o__1.ofnm = DFT8PT.DAT;
o__1.orl = 0;
o__1.osta = OLD;
o__1.oacc = SEQUENTIAL;
o__1.ofm = FORMATTED;
o__1.oblnk = 0;
f_open(&o__1);
o__1.oerr = 0;
o__1.ounit = 6;
o__1.ofnmlen = 10;
o__1.ofnm = DFT8PT.TXT;
o__1.orl = 0;
o__1.osta = NEW;
o__1.oacc = SEQUENTIAL;
o__1.ofm = FORMATTED;
o__1.oblnk = 0;
f_open(&o__1);
/* L1: */
s_rsfe(&io___2);
i__1 = n - 1;
for (i__ = 0; i__ <= i__1; ++i__) {
do_fio(&c__1, (char *)&x[i__], (ftnlen)sizeof(real));
}
e_rsfe();
cl__1.cerr = 0;
cl__1.cunit = 1;
cl__1.csta = 0;
f_clos(&cl__1);
p = (float)6.283 / n;
i__1 = n - 1;
for (k = 0; k <= i__1; ++k) {
a[k] = (float)0.;
b[k] = (float)0.;
i__2 = n - 1;
for (j = 0; j <= i__2; ++j) {
a[k] += x[j] * cos(p * j * k);
b[k] -= x[j] * sin(p * j * k);
/* L20: */
}
/* L10: */
}
i__1 = n - 1;
for (i__ = 0; i__ <= i__1; ++i__) {
/* Computing 2nd power */
r__1 = a[i__];
/* Computing 2nd power */
r__2 = b[i__];
y = sqrt(r__1 * r__1 + r__2 * r__2);
s_wsfe(&io___11);
do_fio(&c__1, (char *)&a[i__], (ftnlen)sizeof(real));
do_fio(&c__1, (char *)&b[i__], (ftnlen)sizeof(real));
do_fio(&c__1, (char *)&y, (ftnlen)sizeof(real));
e_wsfe();
/* L30: */
}
s_stop(", 0L);
} /* MAIN__ */


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

出たエラーを示してもらわないと分からないんですってば。


返信引用
たけし
 たけし
(@たけし)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

dairygoodsさんありがとうございました。
そして、何回も申し訳ないです。
f2cのヘッダファイルを用いてコンパイルをしてみたら以下のエラーが出ました。
: error C2660: 'f_open' : 関数が不正な 1 個の実引数をともなって呼び出されまし
た : error C2660: 'f_open' : 関数が不正な 1 個の実引数をともなって呼び出されま
した : error C2660: 's_rsfe' : 関数が不正な 1 個の実引数をともなって呼び出され
ました : error C2660: 'do_fio' : 関数が不正な 3 個の実引数をともなって呼び出さ
れました : error C2660: 'f_clos' : 関数が不正な 1 個の実引数をともなって呼び出
されました : error C2660: 'cos' : 関数が不正な 1 個の実引数をともなって呼び出さ
れました。
: error C2660: 'sin' : 関数が不正な 1 個の実引数をともなって呼び出されました。
 : error C2660: 'sqrt' : 関数が不正な 1 個の実引数をともなって呼び出されました
: error C2660: 's_wsfe' : 関数が不正な 1 個の実引数をともなって呼び出されまし
た: error C2660: 'do_fio' : 関数が不正な 3 個の実引数をともなって呼び出されまし

: error C2660: 'do_fio' : 関数が不正な 3 個の実引数をともなって呼び出されました
: error C2660: 'do_fio' : 関数が不正な 3 個の実引数をともなって呼び出されまし
た : error C2660: 's_stop' : 関数が不正な 2 個の実引数をともなって呼び出されま
した : warning C4508: 'MAIN__' : 関数に戻り値の型が指定されていません。戻り値
を void 型と見なします。

feedback.exe - エラー 13、警告 1


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

f2c.h にあるプロトタイプ宣言の形式が旧いんじゃないかな、と。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

> -lf2c -lm (in that order)
この意味わかってますか?

>/* Main program */ MAIN__()
1.VCはこのmain 宣言通らんでしょう
 >warning C4508: 'MAIN__' : 関数に戻り値の型が指定されていません。戻り値
 でも通ってはいるね?

2.>たけし 2003/11/20(木) 19:16:01
  で紹介された CまたはCPPソースがあるフォルダと
  インクルードしたい f2c.h は同一フォルダに存在しますか

  >#include f2c.h
  この書き方はそんな意味を持ってますよ

3.f2c.h のなかで さらに#include はありますか?
#include <stdio.h>  なり
#include <iostream.h> 
 
4.
> /* Builtin functions */
> integer f_open(), s_rsfe(), do_fio(), e_rsfe(), f_clos();
ここ と

> o__1.oacc = SEQUENTIAL;
> o__1.ofm = FORMATTED;
> o__1.oblnk = 0;
> f_open(&o__1);  ←ここ

の使い方
C++上ではオーバーロード宣言されてなければこんな使い方出来ないはずですが
>error C2660: 'f_open'
このエラーから察するに 1つしか宣言されていないのではないでしょうか

> f_open(&o__1);
構造体 ポインタとかを欲しがってますよね?

5.知識不足で理解不能 ここの使い方?
> /* Builtin functions */
> integer f_open(), s_rsfe(), do_fio(), e_rsfe(), f_clos();
> double cos(), sin(), sqrt();
> integer s_wsfe(), e_wsfe();
> /* Subroutine */ int s_stop();

だれかフォロー解説よろしくお願いします


返信引用
kojima
 kojima
(@kojima)
ゲスト
結合: 21年前
投稿: 3
 

よくわからないですけど,ソースファイルの拡張子をCPPにしていませんか?
拡張子をCにしてCソースとしてコンパイルしないと
/* Builtin functions */
integer f_open(), s_rsfe(), do_fio(), e_rsfe(), f_clos();
double cos(), sin(), sqrt();
integer s_wsfe(), e_wsfe();
/* Subroutine */ int s_stop();
これが意味ないです。
この宣言はCなら、関数呼び出しの引数のチェックを省略するという意味です。(CPPでは、引数
なしの関数宣言)
エラーメッセージを見ると、コンパイラは律儀に型チェックしてるみたいですが。

それから、f2cで変換したソースをWindowsでコンパイルするには
NO_LONG_LONG
MSDOS
Allow_TYQUAD
といった、マクロを定義する必要があるらしい?
とりあえず、f2cのドキュメントを読んでみるのがいいかと。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました