求fortran调用C++ dll 最好附上一个简单 例题 万分感谢 以分相送!!
答案:2 悬赏:60
解决时间 2021-03-06 23:07
- 提问者网友:年齡太小℡蘿莉
- 2021-03-06 19:13
求fortran调用C++ dll 最好附上一个简单 例题 万分感谢 以分相送!!
最佳答案
- 二级知识专家网友:魅世女王
- 2021-03-06 19:57
调 C 的 dll 会比较容易,很多书本上都有。比如彭国伦的书,还有多数编译器会有示范代码,其中有 mix language 一类的代码,其中都会有调用 C 的 dll 的例子。你根本不需要上网找。
多数编译器,会有 sample 一类的代码,在安装目录下找找就可以了。
如果是 C++ 的 dll,如果涉及到 C++ 的类,其中的方法,导出为 dll 以后,就很难用 Fortran 去调用了。我是说很难,不是说不可以。但需要很多的精力去做。这种情况下,用 COM 组件更容易一些。
多数编译器,会有 sample 一类的代码,在安装目录下找找就可以了。
如果是 C++ 的 dll,如果涉及到 C++ 的类,其中的方法,导出为 dll 以后,就很难用 Fortran 去调用了。我是说很难,不是说不可以。但需要很多的精力去做。这种情况下,用 COM 组件更容易一些。
全部回答
- 1楼网友:星星坠落
- 2021-03-06 21:06
program fftw_test
use, intrinsic :: iso_c_binding
implicit none
interface
real(c_double) function spa_windowing(dataineu, windowtype, datacount, filterflag) bind(c, name='spa_windowing')
use, intrinsic :: iso_c_binding
import
real(c_double),dimension(*) :: dataineu
integer(c_int) :: windowtype
integer(c_long) :: datacount
logical(c_bool) :: filterflag
end function spa_windowing
end interface
!integer(c_dword):: k
integer(c_int) :: i
integer(c_int) :: iw
integer(c_long) :: irow
real(c_double) :: pi,tg
real(c_double), pointer :: in(:) ,in1(:) ! 输入数据
allocate(in(1024),in1(1024))
pi=dacos(-1.d0)
do i = 1, 1024
in(i) = dsin(2.0*pi*i)
end do
iw=1
irow=1024
tg = spa_windowing(in,iw,irow,.true.)
write(*,'(i8, g16.8)')(i,in(i),i=1,1024)
end program fftw_test
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |