lm_lxt
发表于 2014-1-25 21:20:20
17.再来看看Tcl/TK的界面描述能力:
ttk::button .a -text "lm_lxt"
pack .a
运行结果:
好了,接下来只需要发挥你的想象。。。
lm_lxt
发表于 2014-1-26 17:58:35
18.最大的遗憾就是Tcl好像无法调用Fortran语言编写的dll文件。
这个问题如能解决,Tcl和Fortran的搭配已经算很完美了。
期待有人能够解决这个问题并加入讨论!
lm_lxt
发表于 2014-1-26 18:12:54
本帖最后由 lm_lxt 于 2014-1-26 18:19 编辑
19.有人会说C++、C#等语言都能调用Fortran编写的dll文件,而且其他功能丝毫不逊于Tcl。
是的,其实这些语言功能都很强大,如果你掌握的不错的话;如果你只会Fortran,则Tcl这样的语言简单易用,很适合你!说到这里,顺便提一下另一个语言——PureBasic,她同样适合你。
20.PureBasic简单易用,不需要什么恼人的.net fra...,她的IDE很小(约30M!),很轻巧;适合游戏开发。
同时调用Fortran编写的dll文件显得简单而直接,不信你看看:
一、用purebasic调用CVF6.6编译的dll文件
1.用CVF6.6编译下面的fortran程序:
function ARRAYTEST(a,b)
!DEC$ ATTRIBUTES DLLEXPORT:: ARRAYTEST
REAL a,b,ARRAYTEST
ARRAYTEST=a+b
END function ARRAYTEST
2.执行下面的purebasic程序得到结果
a.f = 1.0
b.f = 2.0
PrototypeC.f Arraytest(*a, *b)
If OpenLibrary(0, "dll.dll")
Global Arraytest.Arraytest = GetFunction(0, "_ARRAYTEST@8")
If Arraytest
Debug Arraytest(@a, @b)
EndIf
CloseLibrary(0)
EndIf
二、用purebasic调用gfortran编译的dll文件
1.用gfortran编译下面的fortran程序:
function ARRAYTEST(a,b)
!DEC$ ATTRIBUTES DLLEXPORT:: ARRAYTEST
REAL a,b,ARRAYTEST
ARRAYTEST=a+b
END function ARRAYTEST
2.执行下面的purebasic程序得到结果
a.f = 1.0
b.f = 2.0
PrototypeC.f Arraytest(*a, *b)
If OpenLibrary(0, "dll.dll")
Global Arraytest.Arraytest = GetFunction(0, "arraytest_")
If Arraytest
Debug Arraytest(@a, @b)
EndIf
CloseLibrary(0)
EndIf
lm_lxt
发表于 2014-1-26 18:17:24
21.为了表现PureBasic的强大,下面贴出两张图片(声张声势):
PureBasic的IDE(收费)
PureBasic自带的例子
fcode
发表于 2014-1-26 19:10:23
如果 TCL 可以调用其他语言的 DLL,没道理不能调用 Fortran 产生的。
如果 TCL 本身就是有跨平台的成分,那么语法里可能没有 DLL 相关的东西。
lm_lxt
发表于 2014-1-26 19:21:36
Tcl/TK可以和C/C++语言编写的dll进行良好沟通。但是对于Fortran,目前还不清楚有什么方法。
fcode
发表于 2014-1-26 19:24:19
lm_lxt 发表于 2014-1-26 19:21
Tcl/TK可以和C/C++语言编写的dll进行良好沟通。但是对于Fortran,目前还不清楚有什么方法。 ...
DLL 做为一种操作系统的可执行文件来说,只有二进制语法,是没有语言特征的。
顶多在调用协定上有一些差别。不应该出现这种 C 的 DLL 可用,而 Fortran 的 DLL 不可以的情况。
lm_lxt
发表于 2014-1-26 19:31:07
fcode 发表于 2014-1-26 19:24
DLL 做为一种操作系统的可执行文件来说,只有二进制语法,是没有语言特征的。
顶多在调用协定上有一些差 ...
C的dll调用,我做过相应的例子。
至于Fortran的,有空再看。
fcode
发表于 2014-1-26 19:41:34
lm_lxt 发表于 2014-1-26 19:31
C的dll调用,我做过相应的例子。
至于Fortran的,有空再看。
我觉得应该是不存在问题的。或者说,这些问题应该可以解决。
话说,假如你给我一个DLL,让我判断这是 C 编译出来的,还是 Fortran 编译出来的,我恐怕都不敢保证100%判断正确。
lm_lxt
发表于 2014-1-26 19:45:36
fcode 发表于 2014-1-26 19:41
我觉得应该是不存在问题的。或者说,这些问题应该可以解决。
话说,假如你给我一个DLL,让我判断这是 C 编 ...
应该可以解决!