-1
我在Visual Studio中使用C++進行編程。運行代碼在dll中使用時不起作用
這是我的子程序,這給了我一個特定的值從雙陣列回:
double specific_value_search(std::string mol_fractions_name[], std::string mass_fractions_name_output[], double mass_fractions_output[], int molecule)
{
double specific_value=5;
std::string a = mol_fractions_name[molecule];
std::string b;
for (int i = 0; i <= 11; i++)
{
b = mass_fractions_name_output[i];
if (a.compare(b) == 0)
//if ((a.find(b) != std::string::npos))...this was my second try // sollte string b in Zeile a gefunden werden, dann...
{
specific_value = mass_fractions_output[i];
break;
}
}
return specific_value;
}
所以當我執行在我的項目這段代碼到一個.exe,代碼運行正常。 但是當我把它編譯成一個DLL,通過一個外部程序的運行它,值返回5,因爲我initalisation(不初始化,因爲試圖返回未初始化的變量程序崩潰。
我增加值從下面
在截圖視覺工作室有沒有人有什麼建議嗎?
Screenshot 1 - values from visual studio
Screenshot 2 - values from visual studio
你能否讓[mcve]至少顯示你如何調用該方法? – user463035818
如果你打算使用'std :: string',爲什麼不'std :: vector'?你的代碼對傳遞的數組完全沒有邊界檢查,因爲沒有辦法進行邊界檢查。使用'std :: vector',至少你有'size()','at()'等來做這些事情。 –
PaulMcKenzie
你可以在'std :: string'中使用'operator ==',你不需要使用'compare'方法。 –