c++methodsdllaccess-violationteigha

how to solve a violation Error using a method


I am getting such a weird violation error by using the getAt() method. enter image description here I use the method in this order:

    OdDbBlockTablePtr       w_kOdBlockTablePtr ;
    bool  lbCreateDefaults = false;
    OdDb::MeasurementValue  lkMeasurement = OdDb::kEnglish;
    OdDbDatabasePtr pDb;
    // Datenbank initialisieren
    pDb = g_ExSystemServices.createDatabase(lbCreateDefaults, 
    lkMeasurement);

    // TABLE - Hold Ptr
    
    w_kOdBlockTablePtr = pDb->getBlockTableId().openObject(OdDb::kForWrite);
const wchar_t AcadBlockModelSpace[] = L "*MODEL_SPACE";

wstring lsModelSpace(AcadBlockModelSpace);
w_kOdModelSpaceBlockRecPtr = GetTableRecordIdFromName(lsModelSpace, (OdDbSymbolTablePtr&)w_kOdBlockTablePtr).safeOpenObject(OdDb::kForWrite);


OdDbObjectId K_TeighaClass::GetTableRecordIdFromName(wstring& psName, OdDbSymbolTablePtr& pkTablePtr)
{
    OdDbObjectId lkId;
    try {
        OdString lsOdName = psName.c_str();
        lkId = pkTablePtr->getAt(lsOdName);
    }

    catch (OdError& err)
    {

        DoOdError(err, NULL, NULL);
    }

    return lkId;
}

I would really appreciate if someone could help me. Thanks in advance


Solution

  • That's not weird at all. If you hover your mouse over pkTablePtr, you will almost certainly find that it is nullptr (or the debugger might report this as 0).

    There's not enough information in your question to say why this might be, but since you are already running under the debugger you can walk through your code and find out.

    try ... catch won't catch a hard error like this, by the way. For that, you need __try ... __except (supported on Windows only).