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需要的目录)? 如果是, 那应该一点问题都没有啊? 请高人告知.
代码为
#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();
} 什么错误?
main函数一般用在exe程序里面 错误太多了. 我编译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 肯定路径配置不对。不过我从没这样用过。 老大, 请问怎么使用呢? 非要用VC? 我只想要个window下的unix环境, window下简单的ide编写服务器端程序. 不知道楼主的cygwin配的对不对,编译其他程序的时候没有问题吧?我没用过cygwin
我装的是eclipse+cdt+minGW+msys,装ACE的时候还算比较顺利 建议楼主用vs2003编译,要是版权问题,用vs2008express编译也可以。 哥们,你server代码少个 }
页:
[1]