FreeRDP 2.0 for Windows 编译

简介

Freerdp
一个开源的RDP跨平台客户端;
https://github.com/FreeRDP/FreeRDP

版本

2020-04-09 Github上其发布了2.0版本;
只下载其release版本的源代码包;

编译Windows

使用Cmake-gui进行编译前的准备,
主要流程参考Wiki,部分操作参考前人笔记;
问题解决如这个网友的日志;

使用x64 Native Tools Command Prompt for VS 2017命令行启动Cmake,避免cmake找不到环境变量,下面部分操作也可能用到一个单独环境的cmd上下文;

  1. 解压源代码文件夹,启动cmake-gui;
  2. 设置源代码路径,
  3. 设置输出文件路径,一般我选择在源代码路径上一级建立一个build文件夹来保存编译产物;
  4. 点击configure,等待错误:bowtie:;
    Openssl没有找到;
    LIBUSB_LIBRARY LIBUSB_LIB两个变量没有设置;

2.0版本需要手动处理的组件有这两个:

  • Openssl for windows:从这里下载全量版本Win64 OpenSSL v1.1.1g安装,cmake会自动寻找目标库路径;

  • 发布时需要两个dll文件;

  • libusb: 从官网Download->Latest Windows Binaries 得到windows编译包,使用dll版本的lib,在cmake里的变量里设置好绝对路径,GUI中设置一下Entry的值为文件路径;
    编译时需要在vs2019/2017的链接器配置中填入需要链接的lib文件;

    • 最后的编译中出现了链接问题:无法解析的外部符号 __imp___vsnprintf,老套路,在 vs工程选项,链接器附加依赖项里面添加 legacy_stdio_definitions.lib 即可,其他问题参考这篇博客文章;
    • 使用静态链接的libusb.lib需要增加如下代码解决ioc找不到的问题,参考资料:
//项目freerdp-client.vcxproj,随便找个c文件插入代码
FILE* __cdecl _iob(void)
{
	FILE iob[] = { *stdin, *stdout, *stderr };
	return iob;
}
  • 使用动态链接的lib在发布时需要带上libusb的dll;

点击configure确认配置可用,没有error后,最后点击Generate生成项目文件sln;

双击打开solution文件,看到熟悉的IDE;

libfreeRDP

freeRDP的lib支持可编程二次开发,

调研阶段发现下面几个项目:

  • FreeRDP-Sharp: https://github.com/FreeRDP/FreeRDP-Sharp/issues/1
  • NodeJs binding: https://github.com/bloomapi/node-freerdp

EOF

你可能感兴趣的:(FreeRDP 2.0 for Windows 编译)