用VS2017编译OpenvpnServ.exe
壹、准备工作
一、下载openvpn2.4.6:请前往官网下载:https://www.openvpn.net/截止发稿时,最新的OpenVpn的版本是2.4.6
二、创建工程
1、用vs2017新建一个工程,OpenvpnServ,选择空项目
2、将openvpn-2.4.6/src/openvpnserv/下的所有*.c,*.h文件复制到新工程目录下,并加载到工程中。
三、错误解决
1、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1083 无法打开包括文件: “config-msvc.h”: No such file
请参考:
win7下用vs2017编译OpenVpn2.4.6源码并生成客户端
2、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E1282 无法连接带有不同字符种类的字符串 OpenVpnServ
将automatic.c文件中的openvpn_service_t的定义改变为:
openvpn_service_t automatic_service = {
automatic,
PACKAGE_NAME "ServiceLegacy",
//TEXT(PACKAGE_NAME "ServiceLegacy"),
PACKAGE_NAME" Legacy Service",
//TEXT(PACKAGE_NAME " Legacy Service"),
SERVICE_DEPENDENCIES,
//TEXT(SERVICE_DEPENDENCIES),
SERVICE_DEMAND_START
};
同样地,把其他类似的地方,都把text去掉。且把工程的字符集设置为多字节字符集
3、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2011 “sockaddr”:“struct”类型重定义 OpenVpnServ
添加预处理器定义
WIN32_LEAN_AND_MEAN
4、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1083 无法打开包括文件: “block_dns.h”: No such file or directory OpenVpnServ
这个文件在openvpn的工程中,所以把openvpn目录添加到openserv的c++包含目录中
5、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 __vsnprintf,该符号在函数 _openvpn_vsntprintf 中被引用 OpenVpnServ
添加附加依赖项:legacy_stdio_definitions.lib
6、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 _FlushIpNetTable@4,该符号在函数 _HandleFlushNeighborsMessage 中被引用 OpenVpnServ
添加附加依赖项:Iphlpapi.lib
7、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 _CreateEnvironmentBlock@12,该符号在函数 _RunOpenvpn@4 中被引用 OpenVpnServ
添加附加依赖项:Userenv.lib
8、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 __imp__RtlIpv4AddressToStringW@8,该符号在函数 _HandleDNSConfigMessage 中被引用 OpenVpnServ
添加附加依赖项:
Ntdll.lib
9、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 _delete_block_dns_filters,该符号在函数 _HandleBlockDNSMessage 中被引用 OpenVpnServ
把
block_dns.h 和 block_dns.c 文件添加到工程中
10、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 _FwpmFreeMemory0@4,该符号在函数 _add_block_dns_filters 中被引用 OpenVpnServ
添加附加依赖项:
Fwpuclnt.lib
11、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 _NetLocalGroupGetMembers@32,该符号在函数 _IsUserInGroup 中被引用 OpenVpnServ
添加附加依赖项:Netapi32.lib
12、
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 __imp__PathIsRelativeW@4,该符号在函数 _CheckConfigPath 中被引用 OpenVpnServ
添加附加依赖项:
Shlwapi.lib
编译完成。生成通过