dll中數(shù)據(jù)調(diào)用的問(wèn)題
作者:金字塔 來(lái)源:cxh99.com 發(fā)布時(shí)間:2018年12月17日
-
咨詢內(nèi)容:
我在dll中調(diào)用以下函數(shù)中data.size()?不為空。__declspec(dllexport) int WINAPI kxian(CALCINFO* pData)
{
if(pData->m_nNumData>0)
{
ChanlunCore::GetInstance()->initKx(pData);
ChanlunCore::GetInstance()->initFX();
// 返回結(jié)果集
int i=0;
KXDATA data = ChanlunCore::GetInstance()->getCkxData();
for(C_CKXIT it = data.begin(); it != data.end(); it++)
{
pData->m_pResultBuf[i] = it->flag;
i++;
}
ofstream write;?
write.open("D:\\lc\\KXIAN.txt", ios::app);
write << "data.size()" << data.size() << "\n";
return 0;
}
return -1;
}
但是在第二次獲取data數(shù)據(jù)時(shí) ,data數(shù)據(jù)就獲取不到了, data.size()為0.__declspec(dllexport) int WINAPI kxg(CALCINFO* pData)
{
int i=0;
KXDATA data = ChanlunCore::GetInstance()->getCkxData();
for(C_CKXIT it = data.begin(); it != data.end(); it++)
{
pData->m_pResultBuf[i] = it->high;
i++;
}
ofstream write; //write只是個(gè)名字 你可以定義為任何其他的名字
write.open("D:\\lc\\kxg.txt", ios::app);
write << "data.size()" << data.size() << "\n";
return 0;
}
這是什么情況?
?
?來(lái)源: CXH99.COM
-
金字塔客服:
您的問(wèn)題正在處理,請(qǐng)您耐心等待。
?
-
用戶回復(fù):
我們進(jìn)行調(diào)試的話,日志是我們的一大法寶。1要先確定數(shù)據(jù)初始化kxian()函數(shù)是不是在使用數(shù)據(jù)的kxg()函數(shù)之前調(diào)用的。2要確定ChanlunCore的single再這中間不會(huì)析構(gòu)導(dǎo)致再第一函數(shù)中的數(shù)據(jù)被清理掉。
建議:編程時(shí)盡量保持模塊的獨(dú)立性,去除模塊相關(guān)性,尤其是隱形相關(guān)。