在dll里面写了一个接口,返回CString** 如下:
CString **readUITagName = (CString **)malloc(CFGNUM * sizeof(CString*));
for (int i = 0; i < CFGNUM; i++)
{
readUITagName[i] = (CString *)malloc(CFGPLIES * sizeof(CString));
}
for (int i = 0; i < CFGNUM; i++)
{
for (int j = 0; j < CFGPLIES; j++)
{
memcpy(&readUITagName[i][j], &m_hmiUI.curUITagName[i][j], sizeof(CString));
}
}
```
```
```
return readUITagName;
```
```
在exe中调用这个函数,如下:
```
CString m_readUITagName[CFGNUM][CFGPLIES];
```
CString **readUITagName = NULL;
readUITagName = (CString **)malloc(CFGNUM * sizeof(CString*));
for (int i = 0; i < CFGNUM; i++)
{
readUITagName[i] = (CString *)malloc(CFGPLIES * sizeof(CString));
}
readUITagName = pCrSysCfgDataFunc(); // 调用那个返回CString**的函数,
for (int i = 0; i < CFGNUM; i++)
{
for (int j = 0; j < CFGPLIES; j++)
{
//readUITagName[i][j] = (CString *)(i * CFGNUM + j);
memcpy(&m_readUITagName[i][j], &readUITagName[i][j], sizeof(CString));
sprintf(ss, readUITagName[i][j]);
printf("%s\n", ss);
}
}
```
```
结果一调用,不仅结果不对,还影响到了,exe中其他一个二维数组的数据。
是调用的问题吗?
|