C# 调用非托管DLL文件。

haizhizi2006 2011-03-02 05:02:45
C# 调用非托管DLL文件。DLL文件是用C语言编写的。
如下:
1:结构定义
rditag_t
rditag_t结构定义了测点的结构
typedef struct _rditag_t
{
char tagname[RDI_MAX_TAGNAME_LEN]; /*[in]*/
float val; /*[out]*/
int status; /*[out]*/
} rditag_t;
2:rditagname_t
rditagname_t定义了测点名类型
typedef char rditagname_t[RDI_MAX_TAGNAME_LEN];
----------------------------------------------------
函数说明:
1:void rdi_read(rditag_t tags[], int count, int timeout);
参数
tags 读取数据点数组。
count 输入参数。
timeout 输入参数。
2: void rdi_read0(rditagname_t tagnames[], float values[], int statuses[], int count, int timeout);
参数
tagnames 输入参数。
values 输出参数。
statuses 输出参数。
count 输入参数。
timeout 超时值(毫秒)。
返回值
无。
---------------------------------------------------------------------------------------
用C#调用
public struct rditag_struct
{
public string tagnaem;
public float val;
public int status;
}



rditag_struct[] target_data_array = new rditag_struct[2000];//结构数组 0 - 1999
rditag_struct target_date_struct = new rditag_struct();//结构变量
target_date_struct.tagnaem[1] = "1ELE-11";
target_data_array[1] = target_date_struct;
rdi_read(ref target_data_array, 1, 2000);
测试结果:
无返回值。target_data_array 的上限为0
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2011-03-02
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090225/15/a6bc50ad-9721-4749-b189-dc4a4bc045a1.html
bdmh 2011-03-02
  • 打赏
  • 举报
回复
试试
[MarshalAs(UnmanagedType.ByValArray,SizeConst=RDI_MAX_TAGNAME_LEN])
char[] tagnaem;
haizhizi2006 2011-03-02
  • 打赏
  • 举报
回复
自己顶

110,571

社区成员

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

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

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