[Fortran] 纯文本查看 复制代码
subroutine mainsolve(projectname)
!DEC$ATTRIBUTES DLLEXPORT :: mainsolve
!DEC$ ATTRIBUTES ALIAS:'mainsolve'::mainsolve
use, intrinsic :: ISO_C_BINDING
implicit none
character*16 :: projectname
...
end subroutine
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace cstest
{
class FortranMethod
{
[DllImport("softplatdll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void mainsolve(ref string a);
static void Main(string[] args)
{
string a = "try";
mainsolve(ref a);
}
}
}
[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#] 纯文本查看 复制代码
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);
}
}