各位大侠来帮忙看看,VB.net中如何调用这个 C 的标准 DLL~~~~

tony198512 tony198512 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位大侠,小弟由于某些原因需要使用 VB.NET 调用一个标准C 的 DLL,以下是该函数的描述级调用,我该如何翻译成VB的呢?
定义:
int32 s7_get_multiple_read_cnf(
void *od_ptr, /* In call */
ord16 *result_array, /* Returned */
ord16 *var_length_array, /* Call and Returned */
void *value_array /* Returned */
)

一个可运行的 C 程序例子:
static void my_get_multiple_read_cnf(ord32 cp_descr)
{ int32 ret;
ord16 result[2],var_length[2];
ord8 data_buffer[4]; /* four Byte are necessary for reading two MWORD */
ord8 *value_ptr[2];

/* initialize arrays */
result[0] = S7_RESULT_OBJ_NOT_EXISTS;
result[1] = S7_RESULT_OBJ_NOT_EXISTS;
var_length[0] = 2;
var_length[1] = 2;
value_ptr[0] = &data_buffer[0]; /* set first pointer to begin of buffer */ /问题点
value_ptr[1] = &data_buffer[2]; /* set sec. pointer to offset 2 */ /问题点

if((ret=s7_get_multiple_read_cnf(NULL,result,var_length,value_ptr))!=S7_OK)
{
my_exit(cp_descr,"Error s7_get_multiple_read_cnf",ret);
}
}

问题来了,实际上 value_ptr的第0和第1个元素分别存的是 data_buffer[0] 和 data_buffer[2]的地址,然后将value_ptr作为参数传送给 DLL 中,但是我试了不是报错就是返回值 Value_ptr 中只有一个值。VB.net中该如何处理呢??重分相赠,各位大侠快来呀~~
...全文
评论 56
收藏 已收藏
分享
返回顶部
tony198512
API 1,488 成员 23,270 内容