做了一个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.   

    你试试在你的客户程序里面,定义一个数组。然后把数组的地址传递进去,传递到dll里面的函数
    然后在dll里面赋值,你现在这个数组是定义在dll里面的了
      

  2.   

    既然CString arr1[3][10];是全局的,何必要返回二维数组呢??
    直接做参数传进去不就行了,全局的在函数体结束后不会释放的....
      

  3.   

    CString **或者 LPVOID,传出来再自己转
      

  4.   

    CString* getarr()//不知定义为CString还行?
    {
    for(int i=0;i<3;i++)
    for(int j=0;j<10;j++)
    arr1[i][j]=i+j;return arr1;
    }
      

  5.   

    这是在DLL文件里地全局,调用过了就释放此资源
    忘了说了,这个数组是定义在DLL文件里
      

  6.   

    jslisong(碧螺春) ( ) 信誉:99  2006-08-02 15:04:00  得分: 0  
     
    这个方法可以编译通过,非常感谢再请问一下,在调用函数如何调用啊?怎么转呢?
    可否举一下例子
    不需要返回值前,我这样调用就可以了
    typedef CString (*ADDPROC)();
    ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"getarr");
    Add();//这样调用就行了那现在,我按以下方法数组数组不正确..(CString已改为LPVOID)
    CString arr2[3][10];
    arr2=Add();
    for(int i=0;i<3;i++)
    for(int j=0;j<10;j++)
    AfxMessageBox(arr2[i][j]);ps:刚才又在基础类中发了个,解决后接分地就跟吧:)
    http://community.csdn.net/Expert/topic/4921/4922000.xml?temp=.8342249