「平成」を感じるもの

はじめまして。質問させて下さい。
私はfortran77で書かれたパッケージで使用されてる関数を、C++から呼び出して使えるコードを書いています。
けど、コンパイルがうまく通りません。

f77 -c -o main.o main.f
f77 -c -o sub.o sub.f
g++ -c Jikkou.cxx
g++ main.o sub.o Jikkou.o -lg2c

するとここで、以下のようなエラーを吐いちゃいます。

main.o: In function `main_':
main.f:(.text+0x12c): undefined reference to `ran_'

main.fとsub.fは、fortran77で書かれてるmainプログラムとサブルーチンです。
main.fの中で、乱数を出す為にRAN()を使ってるんですが、g++はこの関数が分からないようです。
どうにかg++にRAN()を分からせるいい方法はありませんか?

A 回答 (3件)

FORTRANに標準の組み込み関数で「RAN()」ってありましたっけ?


C/C++のrand関数をFORTRAN側から呼びたいならそれに合わせる必要がありますし。
    • good
    • 0

あ,なにか変なことを言った気がする。



g2cでやるとどうなるかは知らないけど
gfortran -c -o main.o main.f
gfortran -c -o sub.o sub.f
g++ -c Jikkou.cxx
g++ main.o sub.o Jikkou.o -lgfortran
gfortranを使えば,問題なくfortranの組み込み関数を呼べましたよ。
    • good
    • 0

例えば


extern "C" {
extern void ran_(hogehoge);
};
のように関数プロトタイプの宣言をちゃんとやってる?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報