2006年4月曾遇到一个托管封送的问题,一直没有解决,现在想起来可能是托管封送时数据类型不对错误导致的,现描述如下:
Using VisualStudio.net2003 framework1.1
C#是托管(Manage)类型的,在C#中调用标准C或C++编译的非托管(Unmanage)Dll时必须重新声明(Declare)有关接口(Interface)和结构(struct)。
现有非托管C结构声明如下:
typedef struct struTagValue{
_TCHAR TagName[C_FULL_TAGNAME_LEN];
longTimestamp;
longTagState;
BYTETagType;
union {
floatrval;
longlval;
BOOLbval;
_TCHAR sval[C_STRINGVALUE_LEN];
};
}TAGVAL, *LPTAGVAL;
头文件中有如下定义:
define _TCHAR char;
const DWORD C_FULL_TAGNAME_LEN = 80;
const DWORD C_STRINGVALUE_LEN = 128;
非托管调用接口声明如下
extern "C" BOOL PASCAL EXPORT Agda_GetNextTagValue(HRECORDSET hRecordset, TAGVAL * pTagVal, BOOL bRemoved=TRUE);
<