在C#中调用托管C++DLL,并传递结构体

SugarAnnie 2016-08-20 11:19:06
我用C++编写了一个DLL动态链接库,并且同托管C++封装了一下。其中有一个结构体,比如

typedef struct
{
int a;
int b;
}INFO;

然后我定义了一个函数将这个结构体里面的数据打印出来

int testStruct(INFO *info)
{
cout << "a = " << info->a << endl;
cout << "b = " << info->b << endl;
return 1;
}

然后使用托管C++封装了一个类,在类里调用了这个方法。

我想在C#写的程序中再定义上面的结构体,并对其复制,并调用上面的方法打印输出这些值

public struct INFO
{
public int a;
public int b;
}

INFO info;
info.a = 1000;
info.b = 10;
ClrClass.test1(info);

像我这样写肯定是不行的,哪位大神能指导一下吗?网上的方法貌似都只适用于非托管C++
然后我还想把结构体返回
...全文
753 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
托管C++的话跟C#基本一样了啊,导入直接就可以用了。
SugarAnnie 2016-08-21
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
把struct换成class 上面再加个StructLayoutAttribute 应该就对了
能具体点吗??小白并不大懂
Poopaye 2016-08-20
  • 打赏
  • 举报
回复
把struct换成class 上面再加个StructLayoutAttribute 应该就对了
#region using System; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Text; using System.Threading; using SocketLibrary; #endregion namespace HkwsSDK { /// /// 在海康威视的SDK包上,再进行封装,供简单直接的调用. /// 目前可以控制硬盘录像机和解码器,需要两者密码一样. /// public class HKWS : IDisposable { #region (0)变量定义 /// /// 发现的文件信息结构 /// private readonly NetSDK.NET_DVR_FIND_DATA[] FindData = new NetSDK.NET_DVR_FIND_DATA[1000]; /// /// 远程录像状态 /// public int _StatusSaveMp4; /// /// 功能:设定播放延迟和流畅。 /// 调节播放的延时和流畅程度,如果buffNum值越大,播放的流畅性越好, /// 相应的延时比较大,buffNum值越小,播放的延时很小, /// 但是当网络不太顺畅的时候,会有丢帧现象,感觉播放不会很流畅。 /// 一般设置的帧缓冲大于等于6帧时,音频预览才会正常, /// 如果不需要音频预览,只需要视频实时性则这个值可以设置的更小。 /// public int buffNum = 10; public int bytesReturned; public int channel = 1; public int channelCount = 5; // 共8个通道 public int channelStart = 1; /// /// 客户端信息结构 /// public NetSDK.NET_DVR_CLIENTINFO ClientInfo; /// /// 解码器通道信息 /// public NetSDK.NET_DVR_MATRIX_DEC_CHAN_INFO dci; /// /// 解码器设备配置信息结构 /// public NetSDK.NET_DVR_DEVICECFG DecoderDeviceCfg; /// /// 解码器设备信息结构体结构实体化 /// public NetSDK.NET_DVR_DEVICEINFO DecoderDeviceInfo; /// /// 解码器信息结构体实例化 /// public Server_Info DecoderInfo; /// /// 解码器登录用户id /// public int decoderUserID; /// /// 硬盘录像机设备配置信息结构 /// public NetSDK.NET_DVR_DEVICECFG DvrDeviceCfg; /// /// 硬盘录像机设备信息结构体结构

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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