如何将C#的某个对象转换成IntPtr或其他类型的指针?(Marshal.StructureToPtr除外的方法。前提的这样的,我开发一个C#组件给C++调用,C++那边需要获取组件中的某个对象的值,这个对象是由组件负责管理的,所以C++那边获得这个对象的指针即可。)
解决方案 »
- “System.Runtime.InteropServices.COMException”类型的未经处理的异常出现在 System.Windows.Forms.
- 关于移动文件的一个小问题
- 无Excel运行库的情况下,如何将数据写入Excel文件?
- C#中如何将富文本插入到access数据库中?
- 我想在服务器上做个软件,能够根据机器的MAC地址自动统计其开机时间
- 关于制作安装程序图标的问题
- 急问:c#中如何改变窗口Z-order顺序?
- 关于C#中资源利用的问题!急急急急急急
- html 引用ashx 的问题。
- 100分求教从数据库中读取图片的方法
- 如何在datatable中添加复制一行数据并添加到表的最后一行
- c#中怎么用代码控制pictureBox1_Click在被触发过的情况下不能发生
C++:
struct NReportAttr
{
WORD version;
BYTE rptId;
CString name;
BYTE dataSource;
BYTE dataSourceId;
BYTE layout;
};
C#:
struct ReportInputAttr
{
public ushort version;
public byte rptId;
public string name;
public byte dataSource;
public byte dataSourceId;
public byte layout;
}
猜测是因为CString和string内存结构不同造成的,但不知如何修改。
public struct FSYDItems
{
[MarshalAs(UnmanagedType.I4)]
private int _seltime;
[MarshalAs(UnmanagedType.I2)]
private UInt16 _itemtype;
[MarshalAs(UnmanagedType.I4)]
private int _amount;
[MarshalAs(UnmanagedType.R4)]
private float _price;
[MarshalAs(UnmanagedType.R4)]
private float _preprice;
[MarshalAs(UnmanagedType.R4)]
private float _afterprice; public int SelTime
{
get { return this._seltime; }
set { this._seltime = value; }
}
public UInt16 ItemType
{
get { return this._itemtype; }
set { this._itemtype = value; }
}
public int Amount
{
get { return this._amount; }
set { this._amount = value; }
}
public float Price
{
get { return this._price; }
set { this._price = value; }
}
public float PrePrice
{
get { return this._preprice; }
set { this._preprice = value; }
}
public float AfterPrice
{
get { return this._afterprice; }
set { this._afterprice = value; }
}
}
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 256)]
public string name;
感谢各位的热心帮助,分不多,给大家分分。