g95プログラムからg++関数を呼び出したい。
いつもお世話になっています。
Fortran(g95)プログラムからg++関数を呼び出したいのですが、
実行できません。
どのようにすればよいか、教えて頂けませんでしょうか。
(ちなみにg77からC++を呼ぶことはできました。)
===環境設定===
OS:WindowsXP(pro)
C++コンパイラ :MinGW g++ (gcc version 3.4.5)
Fortranコンパイラ:MinGW g95 (gcc version 4.1.2)
Fortranコンパイラ:MinGW g77 (gcc version 3.4.5)
===使用したソース===
<Fortran>
ファイル名:f.f
write(*,*) "Hello Fortran World."
call funchelloc()
end
※実際には、各行先頭に半角スペース6個が入ります。
<C++>
ファイル名:funcC.cpp
#include <stdio.h>
#include <iostream>
int main(void)
{
printf("hello C world!\n");
return 0;
}
※見やすくするため、全角スペースでインデントしています。
===実行手順===
>g++ -c funcC.cpp
>g95 -c f.f
>g95 f.o funcC.o -lstdc++
c:/mingw/lib///libstdc++.a(eh_throw.o):eh_throw.cc:(.text+0x7b): undefined reference to `_
_w32_sharedptr_unexpected'
c:/mingw/lib///libstdc++.a(eh_throw.o):eh_throw.cc:(.text+0x8c): undefined reference to `_
_w32_sharedptr_terminate'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x4e): undefined reference t
o `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0xb9): undefined reference t
o `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x179): undefined reference
to `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x186): undefined reference
to `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x1e3): undefined reference
to `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x1ef): more undefined refer
ences to `__w32_sharedptr' follow
c:/mingw/lib///libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0x67): undefined referen
ce to `__w32_sharedptr_terminate'
c:/mingw/lib///libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0x97): undefined referen
ce to `__w32_sharedptr_unexpected'
c:/mingw/lib///libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0xb3): undefined referen
ce to `__w32_sharedptr_terminate'
c:/mingw/lib///libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text
No.2ベストアンサー
- 回答日時:
それって, 単に「リンクするライブラリが不足している」だけじゃないの?
ご回答ありがとうございます。
(長時間、放置してすみませんでした。)
C++関数をdllにしてあげたらうまくいきました。
参考
http://d.hatena.ne.jp/arakik10/20100525/p1
No.1
- 回答日時:
どこまで効いてるかわかりませんが。
GCCは3までと4以降で生成するオブジェクトの仕様変更があったはずです。
gfortranとg++のバージョンを揃えるとどうでしょうか
この回答への補足
ご回答、有難うございます。
g++のバージョンを4.4.0に上げてみました。
しかし、うまくビルド(リンク)出来ませんでした。
>g++ -c funcC.cpp
>g95 -c f.f
>g95 f.o funcC.o -lstdc++
funcC.o:funcC.cpp:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
c:/mingw/lib///libstdc++.a(eh_throw.o):eh_throw.cc:(.text+0x7b): undefined reference to `_
_w32_sharedptr_unexpected'
c:/mingw/lib///libstdc++.a(eh_throw.o):eh_throw.cc:(.text+0x8c): undefined reference to `_
_w32_sharedptr_terminate'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x4e): undefined reference t
o `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0xb9): undefined reference t
o `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x179): undefined reference
to `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x186): undefined reference
to `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x1e3): undefined reference
to `__w32_sharedptr'
c:/mingw/lib///libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x1ef): more undefined refer
ences to `__w32_sharedptr' follow
c:/mingw/lib///libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0x67): undefined referen
ce to `__w32_sharedptr_terminate'
c:/mingw/lib///libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0x97): undefined referen
ce to `__w32_sharedptr_unexpected'
c:/mingw/lib///libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0xb3): undefined referen
ce to `__w32_sharedptr_terminate'
c:/mingw/lib///libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0xd3): undefined referen
ce to `__w32_sharedptr_unexpected'
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 面BFRPと平行な辺を全て答えなさい。という問題です。 答えは辺AD、辺EHで合ってますか? 4 2023/08/22 11:19
- その他(生活家電) アイマッサージャーを購入しようと考えています。 パナソニックとMTGどっちが良いでしょうか? 1 2023/05/12 19:30
- 数学 高校数学1について質問です。 次の問題の時の解き方と答えを教えてください。 『1辺が10cmの正方形 7 2022/09/12 19:03
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
- Ruby 教えてください 2 2023/01/04 17:50
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#のループでtextboxに値を入れ...
-
g95プログラムからg++関数を呼...
-
VBAでcallで呼び出したsubを終...
-
三項でたとえば交換って
-
パーソナルXLSBのfuctionを呼び...
-
他のフォームから別のフォーム...
-
PictureBoxでのアニメーション...
-
【VB6.0】 あるフォームから他...
-
TextBoxの内容を右寄せ
-
ACCESS 除算での小数点切上げ方法
-
レコードセットにnullの場合
-
ピッ、ってアルファベットでど...
-
VS CodeでTEXファイルにPDF形式...
-
プログラムの素朴な質問です 分...
-
sublimit textっていうエディタ...
-
Rubyプログラミングの課題につ...
-
Functionの戻り値を配列にした...
-
二点の座標から距離や角度を求...
-
ユーザーフォームへのデータ入...
-
プロシージャを呼び出したプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#のループでtextboxに値を入れ...
-
String型の値にスラッシュをつ...
-
VB
-
テキストボックスを下から上へ...
-
datagridview の任意の行に三...
-
vb.net 文字コードから漢字へ変換
-
VBA テキストボックスで計算
-
Pythonでのかんたんな物理シミ...
-
C# コントロール取得
-
入力された値の動的取得方法に...
-
g95プログラムからg++関数を呼...
-
三項でたとえば交換って
-
VBA public変数はどのようなこ...
-
VBAでcallで呼び出したsubを終...
-
他のフォームから別のフォーム...
-
C言語のサフィックスについて
-
レコードセットにnullの場合
-
エクセルVBAでテキストボッ...
-
Functionの戻り値を配列にした...
-
プログラムの素朴な質問です 分...
おすすめ情報