Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 找不到入口点Fortran Dll_Visual Studio 2010_Dll_Fortran_Entry Point - Fatal编程技术网

Visual studio 2010 找不到入口点Fortran Dll

Visual studio 2010 找不到入口点Fortran Dll,visual-studio-2010,dll,fortran,entry-point,Visual Studio 2010,Dll,Fortran,Entry Point,继续关于dll的最后一个未解决的问题,我尝试使用g95和以下命令创建fortran dll: g95-c FCall.f90 g95-shared-mrtd-o FCall.dll FCall.o 当我将它链接到VB时,它显示“在DLL‘C:\Users\Hp\Documents\Visual Studio 2010\Projects\WindowsApplication5\WindowsApplication5\FCall.DLL’中找不到名为‘FortranCall’的入口点。” 以下是FO

继续关于dll的最后一个未解决的问题,我尝试使用g95和以下命令创建fortran dll:

g95-c FCall.f90

g95-shared-mrtd-o FCall.dll FCall.o

当我将它链接到VB时,它显示“在DLL‘C:\Users\Hp\Documents\Visual Studio 2010\Projects\WindowsApplication5\WindowsApplication5\FCall.DLL’中找不到名为‘FortranCall’的入口点。”

以下是FORTRAN代码:

  SUBROUTINE FortranCall (r1, num)

 !DEC$ ATTRIBUTES DLLEXPORT :: FortranCall

 !DEC$ ATTRIBUTES ALIAS:'FortranCall' :: FortranCall

   REAL,INTENT(IN) :: r1          
   REAL,INTENT(OUT) :: num

   num = MOD (r1, 256.0)

 END SUBROUTINE
下面是VB代码:

   Private Sub Command1_Click()

   r1 = 456.78

   Call FortranCall(r1, Num)

   Text1.Text = Str$(Num)

   End Sub
VB中的模块代码:

声明子FortranCall Lib“C:\Users\Hp\Documents\visualstudio 2010\Projects\WindowsApplication5\WindowsApplication5\FCall.dll”
(r1为单个,Num为单个)

G95是否有自己的export语句从dll导出函数?
在此子例程中,导出属性(!DEC$ATTRIBUTES DLLEXPORT::FortranCall)在visual fortran中使用。您使用的指令非常特定于编译器。甚至连名字都表明它是DEC编译器(及其后代——康柏和英特尔)特有的

Gfortran也有同样的功能,但是有
$GCC,但不是G95

我强烈建议您使用Fortran 2003功能
bind(C,name=“name”)
来设置符号名。另请参见标签

默认情况下,GCC和G95都会导出符号,因此无需使用
dllexport
指令,但将其保留在英特尔Fortran中


或者,您可以尝试使用选项
-fno下划线
,但这同样是g95特有的,不能与其他编译器一起使用。

您使用的指令是编译器特有的。甚至连名字都表明它是DEC编译器(及其后代——康柏和英特尔)特有的

Gfortran也有同样的功能,但是有
$GCC,但不是G95

我强烈建议您使用Fortran 2003功能
bind(C,name=“name”)
来设置符号名。另请参见标签

默认情况下,GCC和G95都会导出符号,因此无需使用
dllexport
指令,但将其保留在英特尔Fortran中


或者,您可以尝试使用选项
-fno下划线
,但该选项同样适用于g95,不能用于其他编译器。

请尝试了解如何使用编辑框中的格式设置。剩下的我们会帮你,但至少尝试一下。好吧,或者只是发现总有人非常渴望从编辑中获得+2(@Blubberguy22),他会一直为你做。谢谢你,很抱歉,我仍然不知道如何在编辑框中使用格式。但我会找出并在下一个问题中使用它谢谢Sergio的编辑请尝试找出如何使用编辑框中的格式。剩下的我们会帮你,但至少尝试一下。好吧,或者只是发现总有人非常渴望从编辑中获得+2(@Blubberguy22),他会一直为你做。谢谢你,很抱歉,我仍然不知道如何在编辑框中使用格式。但我会找到答案,并用它来回答下一个问题。谢谢塞尔吉奥编辑了《为迟来的回应而担忧》。我已经使用上述指令创建了dll。我还尝试使用英特尔visual fortran和visual studio 2008创建dll。但当VB调用该函数时,两种方法都会显示以下错误消息:“试图读取或写入受保护的内存。这通常表示其他内存已损坏”。我不知道如何解决这个问题。你有什么建议吗?谢天谢地,这信息太少,无法诊断任何事情。我不懂VB,但请尝试将
ByRef
添加到子原型中。谢谢。这在VB 2008中是可行的,但在VB 2010中,它仍然存在一个问题,可能会开始一个新的问题,我认为原来的问题已经解决了。我再也帮不了你了。包括一些有意义的描述,“有问题”什么也说不出来。现在,我认为用VB 2008进行项目工作已经足够了。我认为VB 2010中的错误会产生更广泛的问题。所以,我不得不问一个新问题。很抱歉,我的回答太晚了。我已经使用上述指令创建了dll。我还尝试使用英特尔visual fortran和visual studio 2008创建dll。但当VB调用该函数时,两种方法都会显示以下错误消息:“试图读取或写入受保护的内存。这通常表示其他内存已损坏”。我不知道如何解决这个问题。你有什么建议吗?谢天谢地,这信息太少,无法诊断任何事情。我不懂VB,但请尝试将
ByRef
添加到子原型中。谢谢。这在VB 2008中是可行的,但在VB 2010中,它仍然存在一个问题,可能会开始一个新的问题,我认为原来的问题已经解决了。我再也帮不了你了。包括一些有意义的描述,“有问题”什么也说不出来。现在,我认为用VB 2008进行项目工作已经足够了。我认为VB 2010中的错误会产生更广泛的问题。所以,我不得不问一个新问题。
 SUBROUTINE FortranCall (r1, num) bind(C,name="FortranCall")

 !DEC$ ATTRIBUTES DLLEXPORT :: FortranCall

 END SUBROUTINE