Fortran Coder

楼主: deserve0
打印 上一主题 下一主题

[混编] c++向Fortran的dll传递字符串发生“访问冲突”

[复制链接]

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
楼主
发表于 2016-11-14 22:26:57 | 显示全部楼层
本帖最后由 zhuhuanlai 于 2016-11-14 22:32 编辑
fcode 发表于 2016-11-4 09:26
可能你的 IVF 版本有些老,支持得还不全面。
那你只能这样写了:
[mw_shl_code=fortran,true]subroutine vl ...

我的IVF2013+vs2013,运行时也出现错误,如下图所示。

QQ图片20161114223217.png (33.06 KB, 下载次数: 313)

QQ图片20161114223217.png

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
沙发
发表于 2016-11-15 12:39:52 | 显示全部楼层
本帖最后由 zhuhuanlai 于 2016-11-15 12:43 编辑

去掉 Bind(C ,Name="vlhm")
然后 ATTRIBUTES 里面写 stdcall 和 alias.
stdcall 和 alias.是IVF扩展的写法,相当于堆栈清理和命名约定不再通过 ISO_C_Binding。
但是如果去掉Bind(C ,Name="vlhm"),只使用use ,Intrinsic::ISO_C_Binding,在参数传递约定和数组/字符串传递约定还有效吗?

另外,我是2013VS+2013IVF,需要哪个版本的编译器才支持呢?

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
板凳
发表于 2016-11-16 19:18:48 | 显示全部楼层
fcode 发表于 2016-11-15 23:03
1. 你不能全部照抄别人的例子,例如这个例子,是因为提问者的“甲方”要求,必须使用 stdcall。
2. 而 ISO_ ...

感谢您在这么晚的时间还给出了如此详尽的指点!

拜读了您的指点后,豁然开朗,Fortran有您更精彩!

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
地板
发表于 2016-11-17 21:10:30 | 显示全部楼层
本帖最后由 zhuhuanlai 于 2016-11-17 21:15 编辑

您好,请问您在再现群主的代码时,出现过图一问题吗?

我把int _tmain(int argc, _TCHAR* argv[])   改成
int main(int argc, _TCHAR* argv[])         出现了同样的错误

我改成
int main()
去掉里面的参数后又出现图二错误:

如果您方便,请帮忙分享一下您的再现方法,非常感谢?


221444jpbmq0lw0m0rvio9.jpg (292.27 KB, 下载次数: 287)

图一

图一

X{GX@96334{Q{~W2)ZIV459.jpg (228.75 KB, 下载次数: 286)

图二

图二

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
5#
发表于 2016-11-19 12:10:36 | 显示全部楼层
pasuka 发表于 2016-11-18 08:47
给点干货吧
Fortran代码
[mw_shl_code=fortran,true]module mixcompile

感谢您的回复,我想用到的是FORTRAN输出的DLL文件。

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
6#
发表于 2016-11-22 14:14:30 | 显示全部楼层
pasuka 发表于 2016-11-21 09:10
可惜了,看来ls对于程序编译还是一知半解。。sigh

哈哈,我属于非专业程序猿,算是半吊子,见笑了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-5 15:41

Powered by Tencent X3.4

© 2013-2024 Tencent

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