做了一个DLL文件里面有个数组比如我定义了一个全局数组CString arr1[3][10];
在外面调用函数getarr就会用到数组arr1
CString getarr()//不知定义为CString还行?
{
for(int i=0;i<3;i++)
for(int j=0;j<10;j++)
arr1[i][j]=i+j;return arr1;//这里返回可不正确啊???请问大家如何改呀
}

解决方案 »

  1.   

    这样试试:
    CString arr1[3][10];
    BOOL getarr(void*& refArrPtr,int& refX,int& refY)
    {
       refX = 3;
       refY = 10;
       refArrPtr = arr1;
       
       //... ...
     
       return TRUE;
    }
      

  2.   

    CString * GetString()
    {
    CString sztemp;
    for(int i=0;i<3;i++)
    for(int j=0;j<10;j++)
    {
    sztemp.Format("%d, %d", i, j);
    sz[i][j] = sztemp;
    } return sz[0];
    }
      

  3.   

    数组是在DLL文件内部我想在调用DLL时,可以从里面返回数组,请问这是如何调用啊???
      

  4.   

    返回的只能是指针,其实在C++里,二维数组也是用一维模拟的,你可以用arr[y*row_num+x]放法换算,或用STL的vector来做.
    vector<vector<int> > &fun()
    {
    vector<vector<int> > arr;
    return arr;
    }
      

  5.   

    1、您打算怎样LOAD这个DLL啊?Load-Time Dynamic Linking or Run-Time Dynamic Linking?前者在使用的地方直接声明这个function就可以,后者要用GetProcAddress get出函数的地址然后用函数指针访问。
    2、因为那个数组是在DLL里定义的,所以要注意它的生命周期,DLL释放后就别用了。
    3、既然这个function是外部调用的记得要export,用Run-Time Dynamic Linking的话还要在def文件里EXPORTS。