Proto.io:交互设计原理与实践_2024-07-22_12-35-48.Tex

Proto.io:交互设计原理与实践

交互设计基础

1.1 交互设计概述

交互设计(Interaction Design, 简称 IxD)是一种设计实践,专注于定义人造系统或产品与用户之间的交互方式。它不仅关注于界面的外观,更侧重于用户如何与产品进行交互,以及这种交互如何影响用户的情感和行为。交互设计的核心在于理解用户的需求、行为和动机,通过设计直观、高效、愉悦的交互体验来满足这些需求。

关键概念

  • 用户中心设计:确保设计过程始终围绕用户的需求和体验进行。
  • 可用性:产品易于理解和操作的程度。
  • 可访问性:确保产品对所有用户,包括有特殊需求的用户,都是可使用的。
  • 反馈:系统对用户操作的响应,帮助用户理解操作结果。
  • 一致性:产品在不同场景和操作中保持相同的交互模式,提高用户的学习效率。

1.2 用户体验的重要性

用户体验(User Experience, 简称 UX)是用户在使用产品或服务时的主观感受,包括情感、信念、偏好、反应、行为、舒适度和满意度。优秀的用户体验设计能够提升产品的吸引力,增加用户满意度,从而提高用户忠诚度和产品销量。在数字产品设计中,UX 设计尤其重要,因为它直接影响到用户是否愿

tcw@tcw:~/src$ gcc -o test_server -g test_server.c distribution_route.pb-c.c upload_subnet_entry.pb-c.c graph_operate.c floyd_spf.c -pthread /tmp/cc4UXRCC.o:在函数‘distribution_route_entry__get_packed_size’中: /home/tcw/src/distribution_route.pb-c.c:20:对‘protobuf_c_message_get_packed_size’未定义的引用 /tmp/cc4UXRCC.o:在函数‘distribution_route_entry__pack’中: /home/tcw/src/distribution_route.pb-c.c:27:对‘protobuf_c_message_pack’未定义的引用 /tmp/cc4UXRCC.o:在函数‘distribution_route_entry__pack_to_buffer’中: /home/tcw/src/distribution_route.pb-c.c:34:对‘protobuf_c_message_pack_to_buffer’未定义的引用 /tmp/cc4UXRCC.o:在函数‘distribution_route_entry__unpack’中: /home/tcw/src/distribution_route.pb-c.c:42:对‘protobuf_c_message_unpack’未定义的引用 /tmp/cc4UXRCC.o:在函数‘distribution_route_entry__free_unpacked’中: /home/tcw/src/distribution_route.pb-c.c:51:对‘protobuf_c_message_free_unpacked’未定义的引用 /tmp/ccUFYx0j.o:在函数‘upload_subnet_entry__get_packed_size’中: /home/tcw/src/upload_subnet_entry.pb-c.c:20:对‘protobuf_c_message_get_packed_size’未定义的引用 /tmp/ccUFYx0j.o:在函数‘upload_subnet_entry__pack’中: /home/tcw/src/upload_subnet_entry.pb-c.c:27:对‘protobuf_c_message_pack’未定义的引用 /tmp/ccUFYx0j.o:在函数‘upload_subnet_entry__pack_to_buffer’中: /home/tcw/src/upload_subnet_entry.pb-c.c:34:对‘protobuf_c_message_pack_to_buffer’未定义的引用 /tmp/ccUFYx0j.o:在函数‘upload_subnet_entry__unpack’中: /home/tcw/src/upload_subnet_entry.pb-c.c:42:对‘protobuf_c_message_unpack’未定义的引用 /tmp/ccUFYx0j.o:在函数‘upload_subnet_entry__free_unpacked’中: /home/tcw/src/upload_subnet_entry.pb-c.c:51:对‘protobuf_c_message_free_unpacked’未定义的引用 collect2: error: ld returned 1 exit status
10-28
你遇到的错误是 **链接错误(linker error)**,提示信息如下: ``` 对‘protobuf_c_message_get_packed_size’未定义的引用 对‘protobuf_c_message_pack’未定义的引用 ... collect2: error: ld returned 1 exit status ``` 这说明你的程序在链接阶段找不到 Protobuf-C 提供的函数实现。 --- ### ✅ 原因分析: 你在编译时使用了 `.pb-c.c` 文件(这些是 Protobuf-C 生成的代码),但没有链接 Protobuf-C 的运行时库 `libprotobuf-c`,导致编译器无法找到 `protobuf_c_message_*` 系列函数的实现。 --- ### ✅ 解决方案: 你需要在 `gcc` 编译命令中 **加上 `-lprotobuf-c`** 来链接 Protobuf-C 库。 修改你的命令如下: ```bash gcc -o test_server -g test_server.c distribution_route.pb-c.c upload_subnet_entry.pb-c.c graph_operate.c floyd_spf.c -pthread -lprotobuf-c ``` --- ### ✅ 确保前提条件满足: 1. **安装了 Protobuf-C 开发库** - Ubuntu/Debian: ```bash sudo apt-get install libprotobuf-c-dev ``` - CentOS: ```bash sudo yum install protobuf-c-devel ``` 2. **确认 `.pb-c.c` 和 `.pb-c.h` 是由 `protoc-c` 正确生成的** - 示例命令: ```bash protoc-c --c_out=. your_proto_file.proto ``` --- ### ✅ 补充:Protobuf-C 使用流程简要 1. 写 `.proto` 文件; 2. 用 `protoc-c` 生成 `.pb-c.c` 和 `.pb-c.h`; 3. 在你的 C 项目中包含这些文件; 4. 编译时链接 `-lprotobuf-c`。 --- ### ✅ 示例完整编译命令(最终版) ```bash gcc -o test_server -g test_server.c distribution_route.pb-c.c upload_subnet_entry.pb-c.c graph_operate.c floyd_spf.c -pthread -lprotobuf-c ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值