本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

戒除浮躁,读好书,交益友


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:邢红瑞的blog
日志总数:523
评论数量:1142
留言数量:0
访问次数:9702999
建立时间:2004年12月20日




[c++]VC++6.0 和vs 2005编译OpenVPN
原创空间,  文章收藏,  软件技术,  电脑与网络

邢红瑞 发表于 2009/4/3 11:17:51

在Windows下编译OpenVPN,推荐用MinGW工具,readme有,感觉MinGW编译出的openvpn运行速度快些,不过我不熟悉MinGW。不建议编译OPENSSL,需要安装perl,环境问题很多。1.编译lzo ,因为openvpn默认配置用到了lzo压缩库,所以下载lzo压缩包:lzo-2.03,并且将lzo-2.03包中的include文件加入到工程中,将头文件全部加入进去的,必须加上编译选项:LZO_HEADER_DIR    将lzo解压至C盘根目录,在命令行中运行vcvars32.bat,进入lzo目录,不是 win32目录,运行b\win32\vc.bat,编译成功后生成lzo2.lib。   2.在VC中编译OpenVPN    a. 在VC中新建一个名字为OpenVPN的win32 application工程,类型为an empty project。将OpenVPN解压到该工程目录下,将\OpenVPN目录下的.c文件添加到source files中,将.h文件添加到header files中,包括tap-win32目录的东西。    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>#include <winsock2.h>windows.h中又包含了<winsock.h>导致和winsock2.h冲突,解决方法是在include<windows.h>之前添加宏: #define WIN32_LEAN_AND_MEAN#include <windows.h>#include <winsock2.h>在所有的#include <windows.h>前使用#define WIN32_LEAN_AND_MEAN,如:#define WIN32_LEAN_AND_MEAN#include <windows.h>    h.VC中不识别unsigned long long int类型,需改为_int64,修改openvpn的common.h头文件,#ifdef USE_64_BIT_COUNTERS//  typedef unsigned long long int counter_type;     typedef _int64 counter_type;  //修改后 # ifdef WIN32#  define counter_format  "%I64u"# else#  define counter_format  "%llu"# endif#else  typedef unsigned int counter_type;# define counter_format   "%u"#endif    i. 添加类库 #pragma comment (lib, "iphlpapi.lib") //路由用到#pragma comment (lib, "crypt32.lib")  //找到crytoapi.c文件中的CertFreeCertificateContext 函数#pragma comment (lib, "ws2_32.lib")   //winsock#pragma comment (lib, "libeay32.lib")  #pragma comment (lib, "ssleay32.lib")#pragma comment (lib, "lzo.lib"j.删除memcmp.c文件,否则realease有问题3.vc6 编译出现冲突时,link中input 禁用libcd.lib.出现__mb_cur_max;没有定义,建立一个a.cpp文件,extern "C" {     int __mb_cur_max;    unsigned short* _pctype;    int errno;}vs 2005 出现File:gmtime64.cLine:63Expression:(caltim <= _MAX_TIME64_T)Project Properties里面C/C++下的Preprocessor Definitions加上 _USE_32BIT_TIME_T。


阅读全文(10773) | 回复(3) | 编辑 | 精华
 


回复:VC++6.0 和vs 2005编译OpenVPN
原创空间,  文章收藏,  软件技术,  电脑与网络

小武(游客)发表评论于2010/12/14 9:47:38

以下引用小武(游客)在2010-12-14 9:46:08的评论: 以下引用小武(游客)在2010-12-8 22:18:07的评论:我用vs2005建了一个空的项目,把lzo-2.0.3的include的文件都加进了工程中,再把lzo-2.0.3放到C盘下,运行了vcvars32.bat,再运行时b\win32\vc.bat时,出了个错,说'cl'不是内部或外部的命令,也不是可运行的程序。求高人分析一下晕,解决了,是我进入了win32下运行vc.bat,要退到lzo-2.04运行b\win32\vc.bat


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:VC++6.0 和vs 2005编译OpenVPN
原创空间,  文章收藏,  软件技术,  电脑与网络

小武(游客)发表评论于2010/12/14 9:46:08

以下引用小武(游客)在2010-12-8 22:18:07的评论:我用vs2005建了一个空的项目,把lzo-2.0.3的include的文件都加进了工程中,再把lzo-2.0.3放到C盘下,运行了vcvars32.bat,再运行时b\win32\vc.bat时,出了个错,说'cl'不是内部或外部的命令,也不是可运行的程序。求高人分析一下

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:VC++6.0 和vs 2005编译OpenVPN
原创空间,  文章收藏,  软件技术,  电脑与网络

小武(游客)发表评论于2010/12/8 22:18:07

我用vs2005建了一个空的项目,把lzo-2.0.3的include的文件都加进了工程中,再把lzo-2.0.3放到C盘下,运行了vcvars32.bat,再运行时b\win32\vc.bat时,出了个错,说'cl'不是内部或外部的命令,也不是可运行的程序。求高人分析一下

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:VC++6.0 和vs 2005编译OpenVPN
原创空间,  文章收藏,  软件技术,  电脑与网络

风(游客)发表评论于2009/7/23 10:29:22

说了老半天,你把编译好的提供一个包下载不行? 每个人下载的原始包跟你的不一定一样,而且,还要不厌其烦的做相同的修改修改之类的事情。。。 请博主提供一个弄好的下载地址,谢谢

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.093 second(s), page refreshed 144766652 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号