使用.net 调用C++的dll const 结构体指针 函数 是大神的进 分多多的有

阿尤C 2016-03-10 08:41:54
这是C++中的一个虚方法 TapAPITradeLoginAuth 是个结构体

virtual TAPIINT32 TAP_CDECL Login(const TapAPITradeLoginAuth *loginAuth) = 0;


TapAPITradeLoginAuth 结构体定义


struct TapAPITradeLoginAuth
{
TAPISTR_20 UserNo; ///< 用户名
TAPIYNFLAG ISModifyPassword; ///< 是否修改密码
TAPISTR_20 Password; ///< 密码
TAPISTR_20 NewPassword; ///< 新密码
TAPIYNFLAG ISDDA; ///< 是否需要动态认证
TAPISTR_30 DDASerialNo; ///< 动态认证码
TAPINoticeIgnoreFlagType NoticeIgnoreFlag; ///< 忽略推送通知标记
};


下面是基本的字符串宏定义


//! 长度为20的字符串
typedef char TAPISTR_20[21];

//! 是否标示
typedef TAPICHAR TAPIYNFLAG;
//! 是
const TAPIYNFLAG APIYNFLAG_YES ='Y';
//! 否
const TAPIYNFLAG APIYNFLAG_NO ='N';

//! 长度为30的字符串
typedef char TAPISTR_30[31]


这些C++文件最后会生成一个dll文件提供给.net调用

下面请各路大神讲解一下调用的方法 我知道用【DllInport】 来引用dll 但是C++这个方法后买年是个结构体的指针小弟就搞不明白在C#中要怎么转换
...全文
131 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿尤C 2016-03-10
  • 打赏
  • 举报
回复
我在C#中一直报这个错
阿尤C 2016-03-10
  • 打赏
  • 举报
回复
没有人来回答么?球砸啊
阿尤C 2016-03-10
  • 打赏
  • 举报
回复
引用 3 楼 crystal_lz 的回复:
明显你结构定义有问题 你的TapApiQuoteLoginAuth 是怎么定义的 ?。。。。 明显 UserNo 被你定义成了 String 类型 而实际需要的是一个 byte[20] 类型你一个都没有搞对
就i是在纠结C++ 对应到C#的数据类型的转换
crystal_lz 2016-03-10
  • 打赏
  • 举报
回复
明显你结构定义有问题 你的TapApiQuoteLoginAuth 是怎么定义的 ?。。。。 明显 UserNo 被你定义成了 String 类型 而实际需要的是一个 byte[20] 类型你一个都没有搞对

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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