我正在使用包含大量HTML資源的Visual Studio C++項目。他們通過一個看起來像這樣的方法加載:爲什麼LoadResource/LockResource有時會返回連接的資源數據?
LPCTSTR loadHTML(HMODULE hModule, LPCTSTR sResourceName)
{
HRSRC hResource = FindResource(hModule, sResourceName, RT_HTML);
if(!hResource)
return 0;
HGLOBAL hResourceData = LoadResource(hModule, hResource);
if(!hResourceData)
return 0;
return reinterpret_cast<LPCTSTR>(LockResource(hResourceData));
}
大多數情況下,這工作正常。但是,有些時候,它會返回與另一個資源連接的資源。發生這種情況時,這是構建中的一個長期問題。我可以通過向有問題的資源添加幾行空白行然後重新構建項目來「修復」它。它會定期發生,即使資源沒有改變。
我很想深入瞭解它發生的原因。有其他人遇到它嗎?我的資源能否引起問題?我的代碼錯了嗎?
不幸的是,我不願在此發佈示例資源;他們很長,這是專有軟件。
而不是觸摸資源文件,你可以'解決'它通過做一個完整的解決方案重建(清潔+生成)?我不知道這是VS緩存問題。 – Tergiver 2010-07-31 12:15:46
@Tergiver:當遇到問題時,我還沒有嘗試完全重建,主要是因爲該項目需要永遠從頭開始構建。但是,爲了科學的利益,我會在下次發生的時候踢出一個。 – 2010-07-31 12:37:44