回 帖 发 新 帖 刷新版面

主题:请教Fortran编译DLL在C#中调用的问题

首先说一下自己电脑及IDE。
操作系统:Win7 x64
Fortran:Intel.Visual.Fortran.Composer.XE.2011.5.221
Visual Studio 2005

在Fortran中建立了一个DLL库项目,Dynamic-link Library。
代码如下:(定义了一个函数和一个子程序)
Function FAddFunction(a,b)
!DEC$ ATTRIBUTES DLLEXPORT::FAddFunction
 implicit none
Real :: a,b,FAddFunction
FAddFunction=a+b

Return
End Function

SubRoutine Test(a,b,c)
 implicit none
 !DEC$ ATTRIBUTES DLLEXPORT::Test
 Real :: a,b,c
 c=a+b
End SubRoutine
然后编译DLL,编译成功。
接下来在新建一个C#的Windows窗体项目,在引用中添加这个编译的Dll就出现下面的错误:
“未能条件对...的引用,请确保此文件可访问并且是一个有效的程序集或COM组件。”

根据网上大家说的方法,使用DllImport来导入,于是在CS文件中写到:

        [DllImport("Dll1.dll",EntryPoint="FAddFunction")]
        public static extern double FAddFunction(ref double A,ref double B);

        [DllImport("Dll1.dll", EntryPoint = "TEST")]
        public static extern void TEST(ref double A, ref double B, ref double C);

在按钮点击事件里面添加调用:
        private void button1_Click(object sender, EventArgs e)
        {
            double A, B,result=0;
            A = 10;
            B = 20;
           // double result = FAddFunction(ref A,ref B);
            TEST(ref A, ref B, ref result);
            
            MessageBox.Show(result.ToString());
        }
运行时出现如下错误:
“无法加载 DLL“Dll1.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。”


[img]http://p13.freep.cn/p.aspx?u=v20_p1_photo_1110231715273285_0.jpg[/img]
[img]http://p13.freep.cn/p.aspx?u=v20_p1_photo_1110231716307523_0.jpg[/img]

回复列表 (共1个回复)

沙发

你编译好的Dll1.dll放哪儿了?

我来回复

您尚未登录,请登录后再回复。点此登录或注册