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

[2. C/C++/C#] 紧急求救!--关于用VC调用VF动态链接库的问题,急急啊!

[复制链接]
发表于 2007-5-28 17:19:59 | 显示全部楼层 |阅读模式 来自 安徽合肥
紧急求救!--关于用VC调用VF动态链接库的问题,急急啊!


关于用VC调用VF动态链接库的问题,急急啊!

请教高手:我在vc++中调用vf写的动态链接库dll时碰到这样一个问题,当在vf中调用了sin函数时,
做成的dll不能在vc中运行,但是当把sin函数去掉时,做成的dll文件可以在vc中运行,而在vf里常用到一些内部函数,
关于这个问题我找了很多资料也得不到解决,所请高手指教,fortran程序如下:
SUBROUTINE aaa(a,b,c)
$ATTRIBUTES DLLEXPORT :: aaa
$ATTRIBUTES VALUE :: b
INTEGER a,i,j
REAL(4) c(2)
real,INTRINSIC :: SIN

c(1)=a*1.0
c(2)=SIN(b*3.14159/180.)
END SUBROUTINE

另:如果把sin函数中的b换成数值1.0,做成的动态链接库也可以运行。

首先谢谢各位的赐教,不胜感激!

我的邮箱是: qiangliu@iflytek.com
0551-5331887

-----------------------------------
具体程序如下:

在fortran 里指定了a,b是用值传递,而c是地址传递
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
在vc中调用如下:
        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,"_BBB@12");

        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);

如有不明白的地方,和我联系哦,这个问题困饶好长时间没有解决,望各位大侠能够帮忙一下!首先感谢了啊!
 楼主| 发表于 2007-5-29 11:41:27 | 显示全部楼层 来自 安徽合肥

问题,已经解决

Simdroid开发平台
首先谢谢网友yhm的帮助,以便上述问题的解决!

和大家通告一下,谢谢了!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

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

GMT+8, 2024-11-1 15:30 , Processed in 0.032907 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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