永发信息网

C#调用Fortran编写的dll遇到DllNotFoundException

答案:2  悬赏:50  手机版
解决时间 2021-03-18 20:13
  • 提问者网友:人生佛魔见
  • 2021-03-18 10:52
1、我把Fortran编写的dll复制到C#项目的Debug文件夹下了。在添加引用的时候就一直无法添加。百度说不添加引用也没有关系,只是为了IDE方便,于是我就直接运行了,并不能调用我的dll,改成绝对路径还是不能调用:
无法加载DLL“xxxx.dll”:找不到指定模块。(异常来自HRESULT:0x8007007E)。
我的C#和Fortran都是用VS2010编的。
--------------------------------------------------------------------
2、第二个问题关于Fortran编写的dll。我在这个dll里面用到了module,而且使用了多个subroutine,subroutine依次调用,我只在C#直接调用的subroutine里写了必须的栈堆管理约定、命名约定等等。这样是不是就可以了,还是每个subroutine都要写?
--------------------------------------------------------------------
3、查资料的时候发现,有的回答说dll和调用它的C#项目必须同时是DEBUG或者RELEASE的,我不清楚这个描述“编译生成DLL”这里的编译是什么意思?具体如何操作?
有人说是build solution,我试了DEBUG、试了RELEASE,试了生成xxxx.dll,然后重新生成dll时,我发现文件管理器里相关项的最近修改时间都没有变化。
对这个“编译”的操作真的不懂
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-03-18 11:39
用Depends工具打开你的DLL文件,看下缺少哪些依赖的dll,找到之后放到你的DLL同一个目录,界面上黄色问号的就是缺少依赖的dll。
全部回答
  • 1楼网友:迟山
  • 2021-03-18 13:12
参数没事,主要是c#中用的是图形界面,而fortran的dll竟然用了: write(*,*) read(*,*) 这两个东西只能用在控制台界面~~~~~ 计算结果不对的俺在编程爱好者论坛已回复: fortran代码改改: function xyadd(x,y) implicit none !dec$ attributes dllexport::xyadd !dec$ attributes alias:'xyadd'::xyadd integer x,y integer xyadd xyadd=x+y end function
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯