有关DLL的问题,能不能解决的都来看看,见者有分了
我把fortran作成dll,用C调用
fortran格式如下用的是visual fortan5.0A
输入数组为 pnt is the inupt point x,y;ndata is the point amount
! ncont is the contour amount ;cont store the contour number
下 为输出
! output :: xx1,yy1 is the first group and xx2,yy2 is the second
! group ;xyid is the point amount ; last the lines must be
dll程序:
SUBROUTINE ACORD(pnt,ndata,ncont,cont,xx1,yy1,xx2,yy2,xyid)
!DEC$ ATTRIBUTES DLLEXPORT :: ACORD
!DEC$ ATTRIBUTES VALUE :: ndata,ncont,xyid
!DEC$ ATTRIBUTES REFERENCE :: pnt,cont,xx1,yy1,xx2,yy2
INTEGER(4) iseed
REAL(4) rnum,xx1(2401),yy1(2401),xx2(2401),yy2(2401)
REAL(4) PNT(1203,3), TETR(2401,3), XPNT(3,3), CONT(50), DET(2,3)
INTEGER(4) ITETR(2401,3), ISTACK(2401), KTETR(50,2), ITEMP(3,2)
integer(4) ndata
CHARACTER*32 FORM
.......
END SUBROUTINE
但是传值总是不对,后来在vb里也试了,单个的变量可以,可是数组总是不对,fortra缺省的是按照地址传,就是reference,应该没问题,就连数组在内存里的排列也考虑了,还是不行,后来我干脆倒退一步,作成一个伪dll,其实只是把fortran的主程序改为subroutine,输入输出不变,由dll去读写文件,并输出到文件里,不传入任何参数也不传回任何参数,只是调一个ACORD(VOID)结果调试的时候还是死了,不知道是什么毛病,那位大虾作过类似的指点一下
参数进栈应该没问题,我开始用c调,后来我哥们说vb的数组是和fortran相同的,传了几次还是数组出毛病,没办法,只好作成在dll里读写文件,调用的函数是 void function(void)其实就跟可执行文件差不多,我和我哥们都觉得这样和可执行文件没什么分别,而且影响速度,我们这个是离散点分析等值线的模块,测试用的是51个点,分析11条等值线,没有平滑,看不出速度,如果点数增加,估计大量的i/o肯定影响速度
反正我的分多的很下面两个有400分准备给了,见者有分了
http://www.csdn.net/expert/topic/95/95805.shtm
http://www.csdn.net/expert/topic/97/97513.shtm
fortran格式如下用的是visual fortan5.0A
输入数组为 pnt is the inupt point x,y;ndata is the point amount
! ncont is the contour amount ;cont store the contour number
下 为输出
! output :: xx1,yy1 is the first group and xx2,yy2 is the second
! group ;xyid is the point amount ; last the lines must be
dll程序:
SUBROUTINE ACORD(pnt,ndata,ncont,cont,xx1,yy1,xx2,yy2,xyid)
!DEC$ ATTRIBUTES DLLEXPORT :: ACORD
!DEC$ ATTRIBUTES VALUE :: ndata,ncont,xyid
!DEC$ ATTRIBUTES REFERENCE :: pnt,cont,xx1,yy1,xx2,yy2
INTEGER(4) iseed
REAL(4) rnum,xx1(2401),yy1(2401),xx2(2401),yy2(2401)
REAL(4) PNT(1203,3), TETR(2401,3), XPNT(3,3), CONT(50), DET(2,3)
INTEGER(4) ITETR(2401,3), ISTACK(2401), KTETR(50,2), ITEMP(3,2)
integer(4) ndata
CHARACTER*32 FORM
.......
END SUBROUTINE
但是传值总是不对,后来在vb里也试了,单个的变量可以,可是数组总是不对,fortra缺省的是按照地址传,就是reference,应该没问题,就连数组在内存里的排列也考虑了,还是不行,后来我干脆倒退一步,作成一个伪dll,其实只是把fortran的主程序改为subroutine,输入输出不变,由dll去读写文件,并输出到文件里,不传入任何参数也不传回任何参数,只是调一个ACORD(VOID)结果调试的时候还是死了,不知道是什么毛病,那位大虾作过类似的指点一下
参数进栈应该没问题,我开始用c调,后来我哥们说vb的数组是和fortran相同的,传了几次还是数组出毛病,没办法,只好作成在dll里读写文件,调用的函数是 void function(void)其实就跟可执行文件差不多,我和我哥们都觉得这样和可执行文件没什么分别,而且影响速度,我们这个是离散点分析等值线的模块,测试用的是51个点,分析11条等值线,没有平滑,看不出速度,如果点数增加,估计大量的i/o肯定影响速度
反正我的分多的很下面两个有400分准备给了,见者有分了
http://www.csdn.net/expert/topic/95/95805.shtm
http://www.csdn.net/expert/topic/97/97513.shtm
...全文
相关推荐
NiceUBB v6.5.0蓝图终极整合版
为了解决中文化的问题,修改了有关论坛搜索的部分,引入了正则表达式,其它未作根本性的修改;图片方面,除了必要的图片之外(带文字的图片),其它基本保持原版的风格。
C#中加载dll的问题
本文介绍了在C#中加载C++编译的动态库(DLL)时遇到的问题及解决方案。通过DllImport加载DLL,并探讨了“找不到指定模块”异常的原因,包括检查路径和依赖的其他DLL。此外,还分享了如何使用LordPE工具查看DLL中的函数,以解决找不到入口点的错误。
DLL文件详解:作用、缺失问题及解决方案
本文详细介绍了Windows系统中DLL文件的定义、作用及缺失问题的解决办法。DLL文件可节约空间、实现模块化与共享库,方便程序更新维护。当系统提示缺少DLL文件时,可尝试卸载重装程序、更新系统或使用DLL修复工具来解决。
解决Python39.dll缺失问题的三种有效方法
在Windows系统中,Python39.dll缺失会导致程序启动失败。本文介绍三种解决方法:手动修复,从官方获取文件并精准部署、修正注册表;用专业修复工具自动化处理;系统级重装。还解析常见问题,如不推荐直下DLL文件的原因等,助开发者高效解决问题。
NiceUBB v6.5.0 蓝图终极整合版(fa)
在美化版的基础上预安装了10个HACK,所有图片统一进行了修正。另提供了一个图像化导航栏的 HTML 模板


