C#怎样调用VC的动态链接库
添加System.Runtime.InteropServices命名空间如是COM就直接用静态函数调用:publicstaticintGetNum(intlFileSeqNo,stringsExtType,stringsExtNumber,stringsFormID,stringsOperationDate,stringsSystemRegistDate,outintlCount,outintlErrorType,outintlErrorCode){intiRet;WOBCom.ObjClassobj=newWOBCom.ObjClass();iRet=obj.GetNum(lFileSeqNo,sExtType,sExtNumber,sFormID,sOperationDate,sSystemRegistDate,outlCount,outlErrorType,outlErrorCode);returniRet;}如不使COM是普通的DLL不能直接用只能在C++中加一个对外的接口:extern"C"__declspec(dllexport)WOExtConRegObj*OutGetObjConstructor();extern"C"__declspec(dllexport)voidOutGetObjDestructor(WOExtConRegObj*outGetObj);extern"C"__declspec(dllexport)longSelectDummyRecord(long*lErrorType,long*lErrorCode,WOExtConRegObj*outGetObj);//extern"C"__declspec(dllexport)WOExtConRegObj*OutGetObjConstructor(){WOExtConRegObj*outGetObj=newWOExtConRegObj();returnoutGetObj;}extern"C"__declspec(dllexport)voidOutGetObjDestructor(WOExtConRegObj*outGetObj){deleteoutGetObj;}extern"C"__declspec(dllexport)longSelectDummyRecord(long*lErrorType,long*lErrorCode,WOExtConRegObj*outGetObj){returnoutGetObj->SelectDummyRecord(lErrorType,lErrorCode);}C#就可直接调用了[DllImport("XXX.dll",EntryPoint="SelectDummyRecord",ExactSpelling=false,CallingConvention=CallingConvention.Cdecl)]privatestaticexternintSelectDummyRecord(outintlErrorType,outintlErrorCode,intoutGetObj);/////////////////////publicintSelectDummyRecord(outintlErrorType,outintlErrorCode){intintRtn;intRtn=SelectDummyRecord(outlErrorType,outlErrorCode,m_OutGetObj);returnintRtn;}