- 积分
- 0
- 注册时间
- 2007-5-28
- 仿真币
-
- 最后登录
- 1970-1-1
|
请教:我在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);
请高手帮我找找原因,先谢了! |
|