作者egg9 ( )
看板C_and_CPP
標題[問題] Fortran與C/C++混編的問題
時間Fri May 28 12:13:45 2010
因為想要在Fortran上使用C的函式 所以有此需求
Fortran 與 C混編可以正常work
不過不知道為什麼Fortran跟C++函式混編時都會出錯?
# icc -c cfunction.cpp
# ifort -c fprogram.f90
都可以正常產生.o檔
然後再把他們串在一起就出錯了
錯誤訊息如:
# ifort fprogram.o cfunction.o
cfunction.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
使用的是intel compiler v11.1 (for linux )
不知道有沒有高手可以指點一下的
CODE 如下
--------------------
fprogram.f90
--------------------
1 program fprogram
2
3 real*8::a,b
4
5 a=1.0
6
7 write(*,*) 'a=',a
8 call cfunction(a)
9 write(*,*) 'After C function is called:'
10 write(*,*) 'a=',a
11
12 end program fprogram
----------------------
cfunction.c
----------------------
1 void cfunction_(double *a)
2 {
3 *a=23.4;
4 }
-------------------------
cfunction.cpp
-------------------------
1 extern "C"
2 {
3 void cfunction_(double *a);
4 }
5
6 void cfunction_(double *a)
7 {
8 *a = 23.4;
9 }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.201.102
※ 編輯: egg9 來自: 140.116.201.102 (05/28 12:14)
→ james732:拿你貼的錯誤訊息去google有不少資料 或許可以試試 05/28 12:16
→ egg9:之前google過了 不過沒找到什麼有幫助的相關資訊 05/28 13:09
→ egg9:不知道一樓能否明示? 05/28 13:09
→ conanist:F的object code 跟c++的object 可以link嗎? 05/28 13:27
→ tinlans:你確定 C++ 程式是用 icc 編譯?還有幹嘛用 ifort link? 05/28 14:31
→ egg9:cfunction.c那個寫法可以work囉 .cpp那個就出錯了 05/28 16:51
→ egg9:不知道有沒有對C/C++比較熟悉的人可以指點一下C跟C++有哪些 05/28 16:52
→ egg9:不一樣的地方讓那個CODE不能正常跑的 O.O 05/28 16:53
推 VictorTom:extern "C" 不用把cfunction的定義也一起括起來嗎?? 05/28 17:54