pir0texnik2
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вот часть интерфейса со стороны С++ Код: HINSTANCE HIns=NULL; HIns=::LoadLibrary("ye_circ.dll"); if(HIns==NULL){ Application->MessageBox(L"ye_circ.dll not found!", L"Error", MB_OK); return;} sub_fortran_1 ye_circ; ye_circ =(sub_fortran_1)(GetProcAddress((HMODULE) HIns,"YE_CIRC")); | прототип: Код: typedef void (__stdcall *sub_fortran_1)(double*,const double*,const double*,const double*,const double*,const double*,const double*,const double*,const double*,const double*,const double*,const double*,const double*,const double*,const double*,const double*,const int*,const int*,const int*,const int*,const int*,complex<double>*); | вызывается соответственно так: Код: ye_circ (&precis,&a,&Li,&Di,&Lj,&Dj,&Z0i,&Z0j,&k,&k2,&pl2,&plik2,&qlik2,&qljk2,&df,&dl,&p,&q,&i,&j,&II,&Y); | вот так начинается процедура в фортране: Код: subroutine ye_circ (precis_out,a_,Li_,Di_,Lj_,Dj_,Z0i_,Z0j_,k_,k2_,pl2_,plk2_,qlk2_,qlkj2_,df_,dl_,p_,q_,i_,j_,M_max_,ye_circ_out) !DEC$ ATTRIBUTES DLLEXPORT :: YE_CIRC include 'link_fnl_shared.h' | Кол-во аргументов должно совпадать. Оптимизации отключал, включал, переставлял, менял местами - без разницы... Кстати, поставил 2009 РАД студию... переклмпилировал. Там, где раньше считало какие-то циферки теперь НАНы, другой в общем результат... |