Я использую Визуальный Детектор Утечки для обнаружения утечек памяти в моей программе. Когда программа закончила работать, я инициировал утверждение следующим кодом в utility.cpp. Когда Визуальный заголовок Детектора Утечки исключен из программы, прогонов программы и выходов без инцидента.
// Get the *real* address of the import. If we find this address in the IAT,
// then we've found that the module does import the named import.
import = GetProcAddress(exportmodule, importname);
assert(import != NULL); // Perhaps the named export module does not actually export the named import?
Я не уверен, почему утверждение инициировано. У кого-либо есть идея в том, какие сценарии утверждение может быть инициировано?
Спасибо
Я использую ogre3d + vld, и у меня такая же проблема! Я отладил код ошибки с помощью GetLastError (): ERROR_PROC_NOT_FOUND, ошибка 127: указанная процедура не может быть найдена.
Хорошо то, что он работает (проверено с помощью "new char [20]"), если вы закомментируете это утверждение и перекомпилируете, но если вы забыли вызвать «удалить Ogre :: Root :: getSingletonPtr ();» он не будет обнаружен: (
Изменить: Чтобы сообщить утверждения в консоль отладки, вы можете использовать это:
// Get the *real* address of the import.
import = GetProcAddress(exportmodule, importname);
if(import == NULL){
DWORD err=GetLastError();
WCHAR buff[2048];
wcsncpy_s(buff, 2048, L"\n============================================\nImport name: ", _TRUNCATE);
int i=wcslen(buff);
int n=0;
//cast to unicode
while(importname[n]){
buff[i++]=importname[n++];
}
buff[i]=0;
wcsncat_s(buff, 2048, L"\nExport module: ", _TRUNCATE);
i=wcslen(buff);
GetModuleFileName(exportmodule,&buff[i],2048-i);
wcsncat_s(buff, 2048, L"\nError code: ", _TRUNCATE);
i=wcslen(buff);
_itow_s(err,&buff[i],2048-i,10);
wcsncat_s(buff, 2048, L"\n============================================\n", _TRUNCATE);
report(buff);
}
//assert(import != NULL); // Perhaps the named export module does not actually export the named import?
Результат будет:
============================================ Import name: CoGetMalloc Export module: C:\data\projects\Avenon\trunk\source\..\build\Avenon_d.exe Error code: 127 ============================================ ============================================ Import name: CoTaskMemAlloc Export module: C:\data\projects\Avenon\trunk\source\..\build\Avenon_d.exe Error code: 127 ============================================ ============================================ Import name: CoTaskMemRealloc Export module: C:\data\projects\Avenon\trunk\source\..\build\Avenon_d.exe Error code: 127 ============================================