Fortran Coder

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

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

[复制链接]

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
11#
发表于 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, 下载次数: 344)

图一

图一

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

图二

图二

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

12#
发表于 2016-11-18 08:47:41 | 只看该作者
给点干货吧
Fortran代码
[Fortran] 纯文本查看 复制代码
module mixcompile
use iso_c_binding
implicit none
contains
    subroutine cpp_print(cpp_char, n) bind(c, name="f90print")
        use iso_c_binding
        implicit none
        type(c_ptr), value:: cpp_char
        integer(c_int), value:: n

        character(len=n), pointer:: f_string
        call c_f_pointer(cpp_char, f_string)
        write(*, '("Length of string:", 1x, I4)')n
        write(*, *)f_string
    end subroutine
end module

c++代码
[C++] 纯文本查看 复制代码
#include <string>

extern "C" {void f90print(const char*, int);};

int main(int argc, char *argv[])
{
    std::string s{"0123456789"};
    f90print(s.c_str(), s.size());
    for(int i=0; i<argc; i++){
        s = argv[i];
        f90print(s.c_str(), s.size());
    }
    return 0;
}

编译命令
[Bash shell] 纯文本查看 复制代码
g++ a.f90 b.cc -lgfortran -o example

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
13#
发表于 2016-11-19 12:10:36 | 只看该作者
pasuka 发表于 2016-11-18 08:47
给点干货吧
Fortran代码
[mw_shl_code=fortran,true]module mixcompile

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

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

14#
发表于 2016-11-21 09:10:43 | 只看该作者
zhuhuanlai 发表于 2016-11-19 12:10
感谢您的回复,我想用到的是FORTRAN输出的DLL文件。

可惜了,看来ls对于程序编译还是一知半解。。sigh

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
15#
发表于 2016-11-22 14:14:30 | 只看该作者
pasuka 发表于 2016-11-21 09:10
可惜了,看来ls对于程序编译还是一知半解。。sigh

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

本版积分规则

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

GMT+8, 2024-11-15 07:06

Powered by Tencent X3.4

© 2013-2024 Tencent

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