美好的一天。
我是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()中是否有错误? 我无法做出判断。
谢谢。答案 0 :(得分:1)
您正在创建一个对象数组,其中ID对象是该数组中的一个元素。然后你将它传递给一个方法,即所谓的数组objID
您是否可以提供您想要实现的代码示例?
目前尚不清楚。
什么是ID?是否已使用new
实例化ID?什么是ObjGen?
你的dll中是否有函数4,如果没有,这就解释了为什么你有一个空引用异常。仔细检查你的DLL并确保你正在调用函数4。
希望这有助于您提供提示吗? 最好的祝福, 汤姆。