注册 登录
自由的生活_软路由 返回首页

的个人空间 https://www.routerclub.com/?0 [收藏] [复制] [分享] [RSS]

日志

VC++6.0中编译OpenVPN

已有 247 次阅读2007-12-16 21:01

VC++6.0中编译OpenVPN
    在Windows下编译OpenVPN,一般推荐用MinGW工具,但本人尝试过多次都未成功,于是改用VC,经过比较长时间的摸索,得出以下比较繁琐的步骤,与诸初学者共享。
**************************************************************************************************
    环境及工具:
    Microsoft windows xp sp2
    Microsoft VC++6.0
    Microsoft Platform SDK 2001
    ActivePerl-5.8.8.820-MSWin32-x86
    OpenSSL0.9.8
    lzo1.08
    OpenVPN2.0.9
**************************************************************************************************
1)安装VC6.0、SDK、ActivePerl等。
2)到各官方网站上下载OpenSSL、lzo、OpenVPN的压缩包。
3)编译OpenSSL
    a.将OpenSSL解压到C盘根目录下;
    b.在命令提示行中进入该目录,输入perl Configure VC-WIN32,检验perl是否正确安装;
    c.命令行中输入ms\do_ms;
    d.命令行中转到Microsoft Visual Studio\VC98\bin,运行vcvars32.bat以配置环境变量。
    e.命令行OpenSSL目录下,执行nmake –f ms\ntdll.mak 编译成功后,在out32dll目录下,会有四个文件libeay32.dll libeay32.lib ssleay32.dll和 ssleay32.lib
4)编译lzo
    将lzo解压至C盘根目录,在命令行中跳至该目录,运行b\win32\mc120.bat,编译成功后生成lzo.lib
**************************************************************************************************
5)在VC中编译OpenVPN
    a. 在VC中新建一个名字为OpenVPN的win32 application工程,类型为an empty project。将OpenVPN解压到该工程目录下,将…\OpenVPN目录下的.c文件添加到source files中,将.h文件添加到header files中。
    b.将编译成功的lzo.lib libeay32.lib ssleay32.lib添加到工程中,并将libeay32.dll ssleay32.dll拷贝到Debug目录下。
    c.将lzo和OpenSSL的两个include目录添加到VC的路径中:C:\lzo-1.08\include C:\openssl-0.9.8\include。设置的方法为,在VC中,选择tools->options,在directories选项卡下添加。
    d.将SDK的目录…\Microsoft SDK\Include添加到VC路径中,并将其调整到…\Microsoft Visual Studio\VC98\Include之前。
    e.由于创建的是win32 application,需修改默认的调用run-time library的方式,在projects->settings->C/C++,Category选择Code Generation,Use run-time library选择Debug Multithread DLL。
    f. 由于创建的是win32 application,默认入口函数是WinMain,而OpenVPN源码的入口函数为openvpn.c中的main函数,需修改设置,以免出现error LNK2001:unresolved external symbol _WinMain@16的错误。
进入project->setting->c/c++,在category中选择preprocessor,在processor definitions中删除_WINDOWS, 添加_CONSOLE;在Project options中将/subsystem:windows.改为/subsystem:console。
    g.在config-win32.h中注释掉#include <windows.h>,不然会报重定义错误。
    h.VC中不识别unsigned long long int类型,需改为_int64。
    i. 在project->setting->link下的object/library modules中添加ws2_32.lib crypt32.lib
    j. Build all,应该可以搞定。
 

路过

雷人

握手

鲜花

鸡蛋

发表评论 评论 (1 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2025-7-12 15:20 , Processed in 0.046123 second(s), 15 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

返回顶部