忘了说,我的上一个问题在
http://www.csdn.net/expert/topic/95/95805.shtm
没有给出具体调用过程,给了200多分.那位解决的话到这里拿分就行了

解决方案 »

  1.   

    写DLL的时候要注意,要注意参数传递的进栈顺序,FORTRAN我没有用过,但C写DLL用于其他语言调用时一定要注意这个。例如:
    extern "C" BOOL PASCAL EXPORT ExportedFunction()
    {
    .....
    }
    要指定导出调用的形式
      

  2.   

    参数进栈应该没问题,我开始用c调,后来我哥们说vb的数组是和fortran相同的,传了几次还是数组出毛病,没办法,只好作成在dll里读写文件,调用的函数是 void function(void)其实就跟可执行文件差不多,我和我哥们都觉得这样和可执行文件没什么分别,而且影响速度,我们这个是离散点分析等值线的模块,测试用的是51个点,分析11条等值线,没有平滑,看不出速度,如果点数增加,估计大量的i/o肯定影响速度,所以在这里求救了另外ytweiwei(weiwei),你说的我帮你是指什么,我们可以讨论一下
      

  3.   

    看看他的汇编代码。或者用FORTRAN写一个简单点的试验代码,先弄清楚调用过程再说
      

  4.   

    你说的是看谁的汇编 代码,这个dll是我自己写的呀,前面写的是调用的声明
      

  5.   

    你的问题我作过,有两种解决方法,作成DLL,在里面进行读写文件操作,或者干脆作成可执行,在BCB里用调waitobject 和单步执行可以实现.其中我试过,可能是数组的排列方式不对,主要是传递方式不太好解决,fortran是按地址或者按值都可以,要在DLl里指定,C和VB是按地址的.其中向VB传数组,帮助上说只要传递第一个值就可以,我试过,一维的可以,多维的就不行了,这方面我们可以一起研究一下.