开发者社区> 问答> 正文

关于VB.net调用C生成的dll,遇到的比字符集不匹配还纠结的问题

a123456678 2016-03-20 11:17:45 902

升级项目。从6.0到2012。
升级后出现调用dll中c的方法:
DLLEXPORT BOOL WINAPI InsUpdDel( LPSTR lpSqlStr, LPRTNINFO RtnInfo )
其中 LPSTR lpSqlStr 是_char × 类型,在API _winnt.h中定义:
winnt.h
// ANSI (Multi-byte Character) types
//
typedef Null_terminated CHAR NPSTR, LPSTR, *PSTR;
为传入的sql,LPRTNINFO RtnInfo 是自己在头文件中定义的构造体构造体:
typedef struct {
long ErrCode;
char ErrMsg[71];
} RTN_INFO;
typedef RTN_INFO* LPRTNINFO;
_当ErrMsg 传入汉字时,报错:传递给系统调用的数据区域太小。HERSULT:0x8007007A。
当lpSqlStr传入汉字时,却不会报错。
求大神指点,这到底是怎么一回事?
vb中如果要改,实在太麻烦,有没有什么能够在VC下修改的方法?

SQL API
分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:09:12

    如果是该vc,那么就第二个参数也用LPSTR类型好了。再加一个int类型等做errorcode

    0 0
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程