System.NullReferenceException - 未将对象引用设置为对象的实例。 C#的原因

时间:2009-12-13 12:54:25

标签: c# exception

美好的一天。

我是C#的新手并尝试从DLL调用函数(C ++ ObjGen)。我收到这条消息,无法弄清楚原因。这是代码:

object[] objID = new object[] { ID };

ObjGen.Invoke(InvokeEnum.Query_State, objID);

Dll代码

///////////////////////

INVOKE_FUNC_IMPLEMENT(Query_State, CUtil::GetState)

///////////////////////

bool CUtil::GetState(InvokeEnum methodID, SAFEARRAY * psa)
{
    UNIT_ID UID = (UNIT_ID)PARAM_LONG(0);

    CUtil::Instance()->NotifyUpdateState(UID);
    for(int slot = 0; slot < SLOT_ID_MAX; slot++)
        g_CManager.m_PJAssociArray[UID][slot] = 0;

    return true;
}

有一个叫做top Invoke函数的循环。 当objID = 1或2或3时,该功能运行良好。 但是当objID = 4时,函数异常。

可能是什么原因? C#或Dll文件中的问题?

Instance()或NotifyUpdateState()中是否有错误? 我无法做出判断。

谢谢。

1 个答案:

答案 0 :(得分:1)

您正在创建一个对象数组,其中ID对象是该数组中的一个元素。然后你将它传递给一个方法,即所谓的数组objID

您是否可以提供您想要实现的代码示例?

目前尚不清楚。

什么是ID?是否已使用new实例化ID?什么是ObjGen?

你的dll中是否有函数4,如果没有,这就解释了为什么你有一个空引用异常。仔细检查你的DLL并确保你正在调用函数4。

希望这有助于您提供提示吗? 最好的祝福, 汤姆。