积极答复者
关于在.NET环境下调用Fotran编写的DLL和EXE的问题

问题
答案
-
Fortran可以编写COM的。我用的是Intel Fortran 编译器,有一个COM Server的选项,子项包括 in process server(DLL)和out of process server(EXE) 。那就直接做一个COM组件吗?其实我都不懂DLL和COM组件有什么不同的特点,COM组件也没有做过,就是要定义一些接口吗?
可以的话,你就按照那个做一个out of process server(EXE)(我上面回答把进程外,进程内说反了),主要就是实现一些COM接口,这些接口就是你需要外部程序来调用的方法。
当你的out of process server(EXE)独立运行时,外部程序(包括脚本语言,比如vb script)都可以通过一个CLSID,或者CLSID绑定的组件名称连接到你的
out of process server(EXE) 进程,并调用你公开的方法。
作为新手,你可以先根据教程建一个简单的 out of process server(EXE) ,然后用regsvr32 注册你的 exe 程序,或者在 exe 启动时由程序内部注册。然后,运行你的out of process server(EXE),打开Excell 的 VBA 编辑器,编写一段访问的代码:
dim obj as Object
Set obj = CreateObject("你编写的组件名称") '连接到你的组件
obj.Function() '调用你编写的组件的方法
obj=Nothing '断开和你的组件的连接。
当一切都成功后,你就可以把你最初的需求按照这种方式实现。
- 已标记为答案 makinoyui 2010年7月9日 1:04
全部回复
-
当然是DLL比较容易,数据都在用一个进程里面。具体调用方法得看DLL怎么写的。
The following is signature, not part of post
Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
Visual C++ MVP -
Fortran可以编写COM的。我用的是Intel Fortran 编译器,有一个COM Server的选项,子项包括 in process server(DLL)和out of process server(EXE) 。那就直接做一个COM组件吗?其实我都不懂DLL和COM组件有什么不同的特点,COM组件也没有做过,就是要定义一些接口吗?
可以的话,你就按照那个做一个out of process server(EXE)(我上面回答把进程外,进程内说反了),主要就是实现一些COM接口,这些接口就是你需要外部程序来调用的方法。
当你的out of process server(EXE)独立运行时,外部程序(包括脚本语言,比如vb script)都可以通过一个CLSID,或者CLSID绑定的组件名称连接到你的
out of process server(EXE) 进程,并调用你公开的方法。
作为新手,你可以先根据教程建一个简单的 out of process server(EXE) ,然后用regsvr32 注册你的 exe 程序,或者在 exe 启动时由程序内部注册。然后,运行你的out of process server(EXE),打开Excell 的 VBA 编辑器,编写一段访问的代码:
dim obj as Object
Set obj = CreateObject("你编写的组件名称") '连接到你的组件
obj.Function() '调用你编写的组件的方法
obj=Nothing '断开和你的组件的连接。
当一切都成功后,你就可以把你最初的需求按照这种方式实现。
- 已标记为答案 makinoyui 2010年7月9日 1:04