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

[3. Fortran] 为何将函数放入DLL后无法调用?

[复制链接]
发表于 2006-8-29 21:52:36 | 显示全部楼层 |阅读模式 来自 广东广州
创建一个新的DLL project,代码为:
------------------------------------------------------
Module SimpleDLL
implicit none
contains
Function ADD(a, b)
!DEC$ ATTRIBUTES DLLEXPORT :: ADD
        integer, intent(in)::a, b
        integer::ADD       
        ADD=a+b
end Function ADD
end module SimpleDLL
-------------------------------------------------------
compile+link,无问题。
再创建一个console application,名为TestDLL。
并将simpleDLL.dll和simpleDLL.lib拷贝到该工作目录下。
并在project settings中Object/library modules中加入SimpleDLL.lib
TestDLL的代码为
-------------------------------------------------------
program TestDLL
implicit none
integer a, b, c
integer, external::ADD
a=1
b=1
c=ADD(a, b)
write(*, *) c
end program TestDLL
-------------------------------------------------------
连接出现错误,
TestDLL.obj : error LNK2001: unresolved external symbol _ADD@8

求教以上步骤有何错误???
若将function换作subroutine,则可成功通过编译,为何???

[ 本帖最后由 johnkv 于 2006-8-30 01:01 编辑 ]
发表于 2006-8-29 22:13:43 | 显示全部楼层 来自 日本

Integer Function ADD(a, b)

Simdroid开发平台
You must define the function type
 楼主| 发表于 2006-8-30 01:07:51 | 显示全部楼层 来自 广东广州
原帖由 hillyuan 于 2006-8-29 22:13 发表
You must define the function type


不是的,说明函数时不用加上类型说明,只需定义函数的返回值(函数名)的类型。
编译问题已解决,我忘了加上integer, external::ADD这一句。
但这时出现了link错误,望指教。
发表于 2006-8-30 11:24:52 | 显示全部楼层 来自 日本

USE SimpleDLL needed?

If you still cannot solve the problem, goto
http://softwareforums.intel.com/ISN/Community/en-US/Forums/
where compile developers who will definitely solve your problem in.
发表于 2006-8-30 22:29:55 | 显示全部楼层 来自 美国
Module problem?

use SimpleDLL
 楼主| 发表于 2006-8-31 22:54:56 | 显示全部楼层 来自 广东广州
问题已解决,感谢freepu。
忘了use simepledll这一句
还要把external那一句去掉。
在把simpledll.mod所在的目录加入option/directionaries中,否则不能通过编译。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

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

GMT+8, 2024-11-1 21:30 , Processed in 0.036416 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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