Fortran Coder

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

[求助] C#与fortran混编调用不了dll

[复制链接]

258

帖子

0

主题

0

精华

版主

World Analyser

F 币
713 元
贡献
508 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
板凳
发表于 2024-5-14 16:48:29 | 只看该作者
Fortran 这边用以下代码,这样,这个dll就和C语言完全一模一样了:
[Fortran] 纯文本查看 复制代码
Subroutine mainsolve(cprojectname) Bind(C,Name="mainsolve")
!DEC$ATTRIBUTES DLLEXPORT :: mainsolve
  use, intrinsic :: ISO_C_BINDING
  implicit none
  type(c_ptr) , value :: cprojectname
  character(len=16) , pointer :: projectname
  call c_f_pointer( cprojectname , projectname )
end subroutine mainsolve


C#这边我不太懂。AI 给出的答案,不一定对:
[C#] 纯文本查看 复制代码
using System;
using System.Runtime.InteropServices;
 
class Program {
    [DllImport("softplatdll.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern void mainsolve([MarshalAs(UnmanagedType.LPStr)] string str);
 
    static void Main() {
        // 调用DLL中的函数
        string a = "try";
        mainsolve(a);
    }
}

15

帖子

3

主题

0

精华

入门

F 币
88 元
贡献
38 点
沙发
 楼主| 发表于 2024-5-14 11:33:47 | 只看该作者
对了,编译器的是vs2022+oneapi
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-6-30 12:38

Powered by Tencent X3.4

© 2013-2024 Tencent

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