找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5212|回复: 8

ACE编译错误问题?

[复制链接]
发表于 2008-7-29 18:12:05 | 显示全部楼层 |阅读模式
在window下, 利用cygwin成功编译了ACE. ace root为E:\ACE56SRC\ACE_wrappers, 检查ace以及lib子目录发现libACE.dll已经生成.
然后我用dev cpp创建一个工程, 1) 在project属性里"include"的目录添加"E:\ACE56SRC\ACE_wrappers", 2) 在lib目录里添加"E:\ACE56SRC\ACE_wrappers\ace", copy一个很简单的例子过来, 却发现编译很多错误. 请问一般使用一个lib的过程是这样的吗(在IDE加include以及lib需要的目录)? 如果是, 那应该一点问题都没有啊? 请高人告知.
 楼主| 发表于 2008-7-29 18:13:26 | 显示全部楼层

代码为

#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Stream.h"

#define SIZE_DATA 18
#define SIZE_BUF 1024
#define NO_ITERATIONS 5


class Server
{
      public:
             Server (int port): server_addr_(port),peer_acceptor_(server_addr_)
             {
                 data_buf_= new char[SIZE_BUF];
             }
            //Handle the connection once it has been established. Here the
            //connection is handled by reading SIZE_DATA amount of data from the
            //remote and then closing the connection stream down.
            int handle_connection()
            {
                // Read data from client
                for(int i=0;i<NO_ITERATIONS;i++)
                {
                        int byte_count=0;
                        if( (byte_count=new_stream_.recv_n (data_buf_, SIZE_DATA, 0))==-1)
                            ACE_ERROR ((LM_ERROR, "%p\n", "Error in recv"));
                        else
                        {
                            data_buf_[byte_count]=0;
                            ACE_DEBUG((LM_DEBUG,"Server received %s \n", data_buf_));
                        }
                }
                // Close new endpoint
                if (new_stream_.close () == -1)
                   ACE_ERROR ((LM_ERROR, "%p\n", "close"));
   
                return 0;
            }
            
            //Use the acceptor component peer_acceptor_ to accept the connection
            //into the underlying stream new_stream_. After the connection has been
            //established call the handle_connection() method.

            int accept_connections ()
            {
                //can't not get address.
                if (peer_acceptor_.get_local_addr (server_addr_) == -1)
                   ACE_ERROR_RETURN ((LM_ERROR,"%p\n","Error in get_local_addr"),1);
                  
                ACE_DEBUG ((LM_DEBUG, "Starting server at port %d\n",
                                      server_addr_.get_port_number ()));
               
                // Performs the iterative server activities.
                while(1)
                {
                         ACE_Time_Value timeout(ACE_DEFAULT_TIMEOUT);
                         //receive a new conection
                         if (peer_acceptor_.accept (new_stream_, &client_addr_, &timeout)== -1)
                         {
                            ACE_ERROR ((LM_ERROR, "%p\n", "accept"));
                            continue;
                         }
                         else{
                            ACE_DEBUG((LM_DEBUG,
                                  "Connection established with remote %s:%d\n",
                                  client_addr_.get_host_name(), client_addr_.get_port_number()));
                            //Handle the connection
                            handle_connection();
                }
            }

         private:
                char *data_buf_;
                ACE_INET_Addr server_addr_;
                ACE_INET_Addr client_addr_;
                ACE_SOCK_Acceptor peer_acceptor_;
                ACE_SOCK_Stream new_stream_;

};
            
        
//main function.            
int main (int argc, char *argv[])
{
    if(argc<2){
        ACE_ERROR((LM_ERROR,"Usage %s <port_num>", argv[0]));
        ACE_OS::exit(1);
    }
    Server server(ACE_OS::atoi(argv[1]));
    server.accept_connections();
}
发表于 2008-7-29 20:24:01 | 显示全部楼层
什么错误?
main函数一般用在exe程序里面
 楼主| 发表于 2008-7-29 22:55:55 | 显示全部楼层
错误太多了. 我编译ace是用cygwin, 安装在c:\cygwin, devcpp也是安装在c盘, 看了某些错误说找不到"cygwin/version.", 怎么会这样? 我的dev-cpp都包含MinGW的, 现在只是include ace相关的头文件, 怎么会跟cygwin关连起来呢? 太长了, 下面只是copy部分异常. (顺便提一下, 在编译ace的完成后,我尝试编译tests里面的example, 但最终没有成功, 总有提示"无效cpu指令"什么的). 下面的g++还把tests目录作为include目录了, 实际上我在dev-cpp里并没有把它添加为include, 只是把ACE_ROOT添加为include的目录.

Compiler: Default compiler
Building Makefile: "C:\Dev-Cpp\mytest\p1\Makefile.win"
Executing  make...
make.exe -f "C:\Dev-Cpp\mytest\p1\Makefile.win" resouce_test.o
g++.exe -c resouce_test.cpp -o resouce_test.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"E:/ACE56SRC/ACE_wrappers"  -I"E:/ACE56SRC/ACE_wrappers/tests"   

In file included from E:/ACE56SRC/ACE_wrappers/ace/config.h:1,

                 from E:/ACE56SRC/ACE_wrappers/ace/config-macros.h:24,
                 from E:/ACE56SRC/ACE_wrappers/ace/config-lite.h:24,
                 from E:/ACE56SRC/ACE_wrappers/ace/ACE_export.h:11,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_IO.h:18,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Stream.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Acceptor.h:17,
                 from resouce_test.cpp:2:
E:/ACE56SRC/ACE_wrappers/ace/config-cygwin32.h:44:33: cygwin/version.h: No such file or directory

E:/ACE56SRC/ACE_wrappers/ace/config-cygwin32.h:48:27: features.h: No such file or directory
E:/ACE56SRC/ACE_wrappers/ace/config-cygwin32.h:206:33: warning: no newline at end of file
In file included from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_fcntl.h:79,
                 from E:/ACE56SRC/ACE_wrappers/ace/Flag_Manip.inl:5,
                 from E:/ACE56SRC/ACE_wrappers/ace/Flag_Manip.h:54,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK.h:24,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_IO.h:18,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Stream.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Acceptor.h:17,
                 from resouce_test.cpp:2:
E:/ACE56SRC/ACE_wrappers/ace/OS_NS_fcntl.inl: In function `int ACE_OS::fcntl(ACE_HANDLE, int, long int)':

E:/ACE56SRC/ACE_wrappers/ace/OS_NS_fcntl.inl:19: error: `::fcntl' has not been declared

In file included from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.h:32,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.inl:5,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.h:92,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK.h:24,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_IO.h:18,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Stream.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Acceptor.h:17,
                 from resouce_test.cpp:2:
E:/ACE56SRC/ACE_wrappers/ace/os_include/os_stropts.h:42:30: sys/ioctl.h: No such file or directory
In file included from E:/ACE56SRC/ACE_wrappers/ace/os_include/sys/os_wait.h:28,
                 from E:/ACE56SRC/ACE_wrappers/ace/os_include/os_stdlib.h:28,
                 from E:/ACE56SRC/ACE_wrappers/ace/Basic_Types.h:60,
                 from E:/ACE56SRC/ACE_wrappers/ace/Time_Value.h:33,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_unistd.h:29,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.inl:6,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.h:168,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.inl:5,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.h:92,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK.h:24,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_IO.h:18,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Stream.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Acceptor.h:17,
                 from resouce_test.cpp:2:
E:/ACE56SRC/ACE_wrappers/ace/os_include/sys/os_resource.h:31:33: sys/resource.h: No such file or directory
In file included from E:/ACE56SRC/ACE_wrappers/ace/os_include/sys/os_wait.h:28,
                 from E:/ACE56SRC/ACE_wrappers/ace/os_include/os_stdlib.h:28,
                 from E:/ACE56SRC/ACE_wrappers/ace/Basic_Types.h:60,

                 from E:/ACE56SRC/ACE_wrappers/ace/Time_Value.h:33,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_unistd.h:29,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.inl:6,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.h:168,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.inl:5,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.h:92,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK.h:24,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_IO.h:18,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Stream.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Acceptor.h:17,
                 from resouce_test.cpp:2:
E:/ACE56SRC/ACE_wrappers/ace/os_include/sys/os_resource.h: At global scope:
E:/ACE56SRC/ACE_wrappers/ace/os_include/sys/os_resource.h:83: error: `rusage' does not name a type

In file included from E:/ACE56SRC/ACE_wrappers/ace/os_include/os_stdlib.h:28,
                 from E:/ACE56SRC/ACE_wrappers/ace/Basic_Types.h:60,
                 from E:/ACE56SRC/ACE_wrappers/ace/Time_Value.h:33,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_unistd.h:29,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.inl:6,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.h:168,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.inl:5,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.h:92,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK.h:24,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_IO.h:18,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Stream.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Acceptor.h:17,
                 from resouce_test.cpp:2:
E:/ACE56SRC/ACE_wrappers/ace/os_include/sys/os_wait.h:31:29: sys/wait.h: No such file or directory
In file included from E:/ACE56SRC/ACE_wrappers/ace/Basic_Types.h:60,
                 from E:/ACE56SRC/ACE_wrappers/ace/Time_Value.h:33,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_unistd.h:29,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.inl:6,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.h:168,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.inl:5,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.h:92,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK.h:24,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_IO.h:18,

                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Stream.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Acceptor.h:17,
                 from resouce_test.cpp:2:
E:/ACE56SRC/ACE_wrappers/ace/os_include/os_stdlib.h:48: error: `u_int' does not name a type

In file included from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_unistd.h:29,
                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.inl:6,

                 from E:/ACE56SRC/ACE_wrappers/ace/OS_NS_stropts.h:168,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.inl:5,
                 from E:/ACE56SRC/ACE_wrappers/ace/IPC_SAP.h:92,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK.h:24,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_IO.h:18,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Stream.h:17,
                 from E:/ACE56SRC/ACE_wrappers/ace/SOCK_Acceptor.h:17,
                 from resouce_test.cpp:2:
E:/ACE56SRC/ACE_wrappers/ace/Time_Value.h:97: error: expected `,' or `...' before '&' token
E:/ACE56SRC/ACE_wrappers/ace/Time_Value.h:97: error: ISO C++ forbids declaration of `timespec_t' with no type
E:/ACE56SRC/ACE_wrappers/ace/Time_Value.h:115: error: expected `,' or `...' before '&' token
E:/ACE56SRC/ACE_wrappers/ace/Time_Value.h:115: error: ISO C++ forbids declaration of `timespec_t' with no type
E:/ACE56SRC/ACE_wrappers/ace/Time_Value.h:157: error: `timespec_t' has not been declared
发表于 2008-7-29 23:21:09 | 显示全部楼层
肯定路径配置不对。不过我从没这样用过。
 楼主| 发表于 2008-7-30 11:13:26 | 显示全部楼层
老大, 请问怎么使用呢? 非要用VC? 我只想要个window下的unix环境, window下简单的ide编写服务器端程序.
发表于 2008-8-13 23:03:48 | 显示全部楼层
不知道楼主的cygwin配的对不对,编译其他程序的时候没有问题吧?我没用过cygwin
我装的是eclipse+cdt+minGW+msys,装ACE的时候还算比较顺利
发表于 2008-8-14 14:08:23 | 显示全部楼层
建议楼主用vs2003编译,要是版权问题,用vs2008express编译也可以。
发表于 2008-12-8 14:56:41 | 显示全部楼层
哥们,你server代码少个 }
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 21:49 , Processed in 0.022697 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表