winsonluo 发表于 2008-7-29 18:12:05

ACE编译错误问题?

在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需要的目录)? 如果是, 那应该一点问题都没有啊? 请高人告知.

winsonluo 发表于 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;
             }
            //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_=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));
      ACE_OS::exit(1);
    }
    Server server(ACE_OS::atoi(argv));
    server.accept_connections();
}

peakzhang 发表于 2008-7-29 20:24:01

什么错误?
main函数一般用在exe程序里面

winsonluo 发表于 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"
Executingmake...
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

peakzhang 发表于 2008-7-29 23:21:09

肯定路径配置不对。不过我从没这样用过。

winsonluo 发表于 2008-7-30 11:13:26

老大, 请问怎么使用呢? 非要用VC? 我只想要个window下的unix环境, window下简单的ide编写服务器端程序.

wishel 发表于 2008-8-13 23:03:48

不知道楼主的cygwin配的对不对,编译其他程序的时候没有问题吧?我没用过cygwin
我装的是eclipse+cdt+minGW+msys,装ACE的时候还算比较顺利

sevencat 发表于 2008-8-14 14:08:23

建议楼主用vs2003编译,要是版权问题,用vs2008express编译也可以。

haha123_0 发表于 2008-12-8 14:56:41

哥们,你server代码少个 }
页: [1]
查看完整版本: ACE编译错误问题?