- 积分
- 8
- 注册时间
- 2005-5-13
- 仿真币
-
- 最后登录
- 1970-1-1
|
VC和CVF中编译连接通过都没问题,但是当动行时就会出现:
“0x000557b6”指令引用的“0x000557b6”内存,该内存不能为“read”,但是当我把Fotran里的动态数组改为静态时就没错误了,可是我的程序必须用动态数组,请各位老师能帮我解答一下!!!
Fotran代码:
subroutine arraytest(n,arr)
$ATTRIBUTES DLLEXPORT :: ARRAYTEST
implicit none
integer:: i,j,n
real,dimension(:,: ),allocatable:: arr
n=2
allocate(arr(0:n,0:n))
do i=0,2
do j=0,2
arr(i,j)=n+i+j
end do
end do
end subroutine arraytest
C++代码:
HINSTANCE hIns;
hIns = LoadLibraryEx("EXAM.dll",NULL,DONT_RESOLVE_DLL_REFERENCES);
typedef float (*MYPROC)(int &a, float b[3][3]);
MYPROC fun= (MYPROC)GetProcAddress(hIns,"_ARRAYTEST@8");
float arr[3][3];
int a = 1;
fun(a,arr); //调用Fortran函数
::FreeLibrary(hIns); |
|