基于ACE网络编程配置

来源:互联网 发布:python sys 用法 编辑:程序博客网 时间:2024/06/09 20:17

最近由于公司用到ACE,所以自己学着用ACE来实现类似于socket网络编程的功能。但当我写服务器端的时候就遇到了大麻烦,由于我是用ACE库导入的,所以不

断的会提示如下错误:

ACE_SERVER error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: int __thiscall SVACE_5_6_0::ACE_Main_Base::run(int,char * * const)" (__imp_?run@ACE_Main_Base@SVACE_5_6_0@@QAEHHQAPAD@Z) ,该符号在函数 _main 中被引用。我用的编译环境是vs2003的,后来我转到vs2010下后编译就可以

通过,但运行的时候端口还是不能绑定。最后问了我的师傅才最后搞定。主要问题ACE中的lib库也是要编译生成的,而编译生成的工具要与你后期开发时的编译工具是

相同版本的,后来自己去网上下了个ACE5.5的,然后自己编译来生成库。下面我主要把ACE如何配置运行来说明一下。当然也借鉴了网上很多知识,而且我这个配置比较

简介,如果还是不能运行,请点击http://www.cnblogs.com/xianqingzh/archive/2011/11/29/2267400.html。

ACE配置运行:

1.下载安装包:http://download.dre.vanderbilt.edu/,只需要下载ACE-5.5.zip即可。

2.下载完后解压路径,我这里是F:\ACE-5.5\ACE_wrappers。

3.设置环境变量(这个必须设置,我这里直接编译运行之后会报无法解析的错误)

用户变量 ACE_ROOT为F:\ACE-5.5\ACE_wrappers,然后再添加Path环境变量,值为%ACE_ROOT%\lib

4.编译ace文件夹中的ace_vc8.sln,然后在lib中就会生成ACEd.lib与ACEd.dll两个库文件

综上你就可以使用ACE库与ace文件夹中的头文件了,我在配置中还是遇到一些错误的。

比如 无法从“int”转换为“ACE_THR_FUNC_RETURN”,我的解决方法是直接删除reinterpret_cast,这个强制转换也许跟版本有关吧。

还有一个是编译正常,但无法运行,最后发现ACE库与ace文件夹不是同一个版本,即ACE库不是这个ace文件夹所编译生成的

到这里我想你应该可与使用你所生成的ACE库来开发程序了,如果还不行,

请点击http://www.cnblogs.com/xianqingzh/archive/2011/11/29/2267400.html



原创粉丝点击