开发者社区> 问答> 正文

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

升级项目。从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下修改的方法?

展开
收起
a123456678 2016-03-20 11:17:45 2216 0
1 条回答
写回答
取消 提交回答
  • 如果是该vc,那么就第二个参数也用LPSTR类型好了。再加一个int类型等做errorcode

    2019-07-17 19:09:12
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载