动态链接库结构体类型参数的传递实例

本文档展示了如何在调用动态链接库时传递结构体参数,特别是涉及结构体中含有点分十进制IP字符串的情况。通过示例说明了在调用过程中可能出现的问题,即虽然动态链接库内部处理正确,但在返回后调用主体中无法正确获取参数值,可能由于内存管理或数据复制导致的‘字符串读取错误’。
摘要由CSDN通过智能技术生成

本程序通过调用动态链接库获取局域网内可用IP。


为了获取动态链接库中的结构体类型变量,可以在调用动态链接库时传入相同结构的结构体参数。

例:

//动态链接库,通过调用IPscan()可以获得参数值:ip_scan_reply
DLL
.h
typedef struct
{
	char	echo_ip[100][16];
	BOOL	error_message;	
}IP_SCAN_REPLY;

//声明函数为导出函数返回参数、形参类型要和函数本身保持一致
extern "C" _declspec(dllexport) void IPscan(IP_SCAN_REPLY * ip_scan_reply);

.cpp
void IPscan(IP_SCAN_REPLY * ip_scan_reply)
{
    /**************
        函数体
    **************/
    (* ip_scan_reply) = result;

    return;
}

下面是调用上述动态链接库并获取动态链接库执行结束后的参数

ip_scan_reply

的方法。

//MFC调用动态链接库

//定义相同结构的结构体
typedef struct
{
	char	echo_ip[100][16];
	BOOL	error_message;	
}IP_SCAN_REPLY;

//按钮事件
void CLocal_Area_Network_IP_ScanDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
    //定义dll的句柄
	HINSTANCE hDll = NULL;
    //定义结构体变量,用于存储从动态链接库返回
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值