vfp如何调用带结构参数的dll函数

sharekeyng 2010-09-14 03:59:37
MvxSock.dll函数MvxSockConnect定义如下
unsigned long CALLBACK MvxSockConnect( PSERVER_ID pstruct, char *Host, int Port,
char *UserId, char *Pwd, char *MI, char *Key);

其中SERVER_ID是一个结构类型,定义如下
typedef struct _SERVER_ID { /* size 440, in AS400 560 */
char ServerName[32];
unsigned short ServerPortNr;
unsigned short usFlags;
char ApplicationName[17];
char MessageID[8];
char BadField[7];
char Buff[256];
MvxSocket TheSocket;
int cryptOn; /* 4 bytes - Crypto: 1 is on & 0 is off */
unsigned char cryptKey[57]; /* 57 bytes - Crypto key: maximum 448 bits */
int Trim; /* This position earlier kept the "Mode" variable. */
int iNextGen; /* Indicates if we are running against NextGen */
int iToken; /* Holds the token from NextGen*/
char *pFld;
char *pCurTrans;
char *pTrans;
PFLDMAP pOut;
PFLDMAP pIn;
B_FIELD *field;
#if defined(__SUN__) || defined(__AIX__) || defined(__LINUX__)
iconv_t toAnsi; /* In Sun we need to use iconv for Ansi/UCS2 conversion */
iconv_t toUCS2;
char reserved[7]; /* 7 bytes - For future use */
#elif defined(__AS400__)
iconv_t *toEbcdic; /* In AS400 we need to use iconv for Ebcdic/UCS2 conversion */
iconv_t *toUCS2; /* In AS400 iconv_t is a struct so we use pointers (allocated space) */
char reserved[7]; /* 7 bytes - For future use */
#else
unsigned char *zipb;
char reserved[11]; /* 11 bytes - For future use */
#endif
} SERVER_ID, *PSERVER_ID;

在VFP中应该如何调用MvxSockConnect函数呢?
DECLARE INTEGER MvxSockConnect IN MvxSock ;
STRING @PSERVER_ID, STRING Host, INT Port, STRING UserID, STRING Pwd, ;
STRING MI, STRING Key

lnConnHandle = MvxSockConnect(@sid, "192.168.100.70", 16800, "lawson2", "lawson2", "MMS200MI", NULL)
其中@sid不知道如何定义,望高人指点!
...全文
188 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
FOXHENGXING 2010-09-17
  • 打赏
  • 举报
回复
这个问题最好还是用c/c++去写,我看这结构就很头大,里面还嵌着指针
这真要处理,用FOXPROP写起来的代码量不少,还得一个个成员算.这么复杂的结构,除非真的必要,要不不建议用foxpro处理这类东西
sharekeyng 2010-09-16
  • 打赏
  • 举报
回复
自己顶一下,期待高人析疑解惑!
sharekeyng 2010-09-14
  • 打赏
  • 举报
回复
DECLARE INTEGER MvxSockConnect IN MvxSock ;
STRING @PSERVER_ID, STRING Host, INT Port, STRING UserID, STRING Pwd, ;
STRING MI, STRING Key

sid = Replicate(Chr(0),254)
lnConnHandle = MvxSockConnect(@sid, "192.168.100.70", 16800, "lawson2", "lawson2", "MMS200MI", NULL)

报Too many arguments错误
十豆三 2010-09-14
  • 打赏
  • 举报
回复 1
sid=Replicate(Space(1),254)

sid=Replicate(Chr(0),254)

不过得出的sid还需要转换才能得出你要的数据

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧