FreeRDP在windows上的编译和使用

FreeRDPWindows下远程桌面协议(RDP)的一种实现,类似于微软自带的mstsc,可以实现windows上的远程连接,特别是对于在ubuntu或者在Mac下,需要在局域网下实现到Windows的远程连接,这是一种不错的选择,对于在Windows 下已经有了mstsc,编译FreeRDP 是为了进行代码的学习。

必备软件的安装

1.vs2019

这里假设大家都会安装vistual studio套件了,不会的百度一下,已经有了很多教程,建议大家用2019或者以后的版本。

2.cmake

FreeRDP不仅仅是windows下能用,在linux平台也可以使用,这次我们需要在windows上进行编译,采用cmake,生成vs的工程。

下载最新版的cmake安装 最新版本,这样后面在生成vs的时候,才能选到最新的编译器。

3.libusb

建议下载 libusb-1.0.24 版本的libusb,打开的目录如下:

在这里插入图片描述

4.openssl

传输数据的通道,采用的是openssl,到官网下载相关版本版本,这里选择的是Win64 v1.1.1版本。

在这里插入图片描述

使用cmake生成VS解决方案

下载最新版本的FreeRDP源码解压放到 目录 D:\work\2022\FreeRDP\FreeRDP-2.7.0
打开cmake,地址配置如下:

在这里插入图片描述
点击configure按钮生成配置文件。

在这里插入图片描述
如果出现了如下的错误:

 error MSB6003: 指定的任务可执行文件“cmd.exe”未能运行。System.IO.IOException: 未能创建临时文件。临时文件文件夹已满或其路径不正确。

那是因为我们启动CMake的时候没有用管理员权限。重启以管理员权限打开cmake 编译,

在这里插入图片描述
有两个配置我们还需要配置一下,把 libusb-1.0.24拷贝到项目下,配置LIBUSB_1_LIBRARY,LIBUSB_1_INCLUDE_DIR 到对应的目录下,

LIBUSB_1_INCLUDE_DIR    D:\work\2022\FreeRDP\FreeRDP-2.7.0\libusb-1.0.24\include\libusb-1.0

LIBUSB_1_LIBRARY        D:\work\2022\FreeRDP\FreeRDP-2.7.0\libusb-1.0.24\VS2019\MS64\dll

继续编译,出现Configuring done ,接着继续generate按钮,生成工程项目。
build目录下已经生成了如下的工程文件,用vs打开。
在这里插入图片描述

用vs编译FreeRDP解决方案

vs打开 FreeRDP.sln解决方案,稍微配置一下就可以使用。

点击Open Project打开解决方案 修改freerdp-client项目属性 在属性->链接器->输入->附加的依赖项中增加 D:\work\2022\FreeRDP\FreeRDP-2.7.0\libusb-1.0.24\VS2019\MS64\dll\libusb-1.0.lib

不知道是什么问题,libusb-1.0.lib 并没有出现在lib中需要自己配置,不然会出现连接错误。

29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_init,函数 libusb_freerdp_urbdrc_client_subsystem_entry 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_exit,函数 udevman_free 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_has_capability,函数 poll_thread 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_strerror,函数 libusb_freerdp_urbdrc_client_subsystem_entry 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_get_device_descriptor,函数 hotplug_callback 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2001: 无法解析的外部符号 libusb_get_device_descriptor
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_get_active_config_descriptor,函数 device_is_filtered 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2001: 无法解析的外部符号 libusb_get_active_config_descriptor
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_free_config_descriptor,函数 device_is_filtered 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_get_bus_number,函数 hotplug_callback 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2001: 无法解析的外部符号 libusb_get_bus_number
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_get_device_address,函数 hotplug_callback 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2001: 无法解析的外部符号 libusb_get_device_address
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_try_lock_events,函数 poll_libusb_events 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_unlock_events,函数 poll_libusb_events 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_event_handling_ok,函数 poll_libusb_events 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_event_handler_active,函数 poll_libusb_events 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_lock_event_waiters,函数 poll_libusb_events 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_unlock_event_waiters,函数 poll_libusb_events 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_wait_for_event,函数 poll_libusb_events 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_handle_events_locked,函数 poll_libusb_events 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_hotplug_register_callback,函数 poll_thread 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_hotplug_deregister_callback,函数 poll_thread 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevman.obj) : error LNK2019: 无法解析的外部符号 libusb_set_option,函数 libusb_freerdp_urbdrc_client_subsystem_entry 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2019: 无法解析的外部符号 libusb_error_name,函数 log_libusb_result 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2019: 无法解析的外部符号 libusb_get_device_list,函数 udev_new_by_id 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2019: 无法解析的外部符号 libusb_free_device_list,函数 udev_new_by_id 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2019: 无法解析的外部符号 libusb_unref_device,函数 udev_new_by_id 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2019: 无法解析的外部符号 libusb_get_config_descriptor,函数 udev_init 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2019: 无法解析的外部符号 libusb_get_port_number,函数 udev_init 中引用了该符号
29>urbdrc-client-libusb.lib(libusb_udevice.obj) : error LNK2019: 无法解析的外部符号 libusb_get_port_numbers,函数 udev_get_device_handle 中引用了该符号
。。。

wfreerdp-client设为启动项,进行编译,生成wfreerdp.exe
在这里插入图片描述
在进行调试之前,把libusb-1.0.dll 拷贝过去,配置运行参数:

在这里插入图片描述
勇敢的跑起来吧。

在这里插入图片描述

出现了让你输入远程账号和密码的界面,输入进行远程连接。

在这里插入图片描述

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

go2coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值