找回密码
 注册
Simdroid-非首页
查看: 76|回复: 0

vc调用fortran动态链接库的问题

[复制链接]
发表于 2007-5-28 17:24:57 | 显示全部楼层 |阅读模式 来自 安徽合肥
请教:我在vc++中调用vf写的动态链接库dll时碰到这样一个问题,当在vf中调用了sin函数时,
做成的dll不能在vc中运行,但是当把sin函数去掉时,做成的dll文件可以在vc中运行,
关于这个问题我找了很多资料也得不到解决,所请高手指教,fortran程序如下:
SUBROUTINE BBB(a,b,c)
!DEC$ATTRIBUTES DLLEXPORT :: BBB
INTEGER a
REAL b,c(2)
!DEC$ATTRIBUTES VALUE :: a
!DEC$ATTRIBUTES VALUE :: b
!DEC$ATTRIBUTES REFERENCE :: c
INTEGER i,j
real,INTRINSIC :: SIN

c(1)=a*1.0
c(2)=SIN(b*3.14159/180.)
END SUBROUTINE
在fortran 里指定了a,b是用值传递,而c是地址传递.如果把SIN(b*3.14159/180.)中的b改为一个数值如60.0,做成的dll文件也可以在vc中运行.
vc调用dll文件如下:
HINSTANCE hIns;
hIns = LoadLibraryEx("aaa.dll",NULL,DONT_RESOLVE_DLL_REFERENCES);
typedef  int (*MYPROC)(int &a, float b, float c[2]);
MYPROC fun= (MYPROC)GetProcAddress(hIns,"[email=_BBB@12]_BBB@12[/email]");

int a=5;
float b=float(4.2) ;
float c[2] ;
fun(a,b,c);
// a=b;
CString str;
str.Format("%f",c[1]);
MessageBox(str);

请高手帮我找找原因,先谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 15:34 , Processed in 0.032275 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表