我在使用ACE_Unmanaged_Singleton的时候,释放资源调用ACE_Unmanaged_Singleton::close(),编译器却提示:
1>Compiling...
1>rebuild_thread.cpp
1>.\src\rebuild_thread.cpp(250) : error C2039: 'closesocket' : is not a member of 'ACE_Unmanaged_Singleton'
1> with
1> [
1> TYPE=RebuildThread,
1> ACE_LOCK=ACE_Thread_Mutex
1> ]
1>.\src\rebuild_thread.cpp(250) : error C2660: 'closesocket' : function does not take 0 arguments
RebuildThread类的定义如下:
class RebuildThread : public ACE_Task
{
public:
RebuildThread() {}
~RebuildThread() {}
virtual int svc();
int ProcessPacketFromFile( const char *filename );
最新回复
1>Compiling...
1>rebuild_thread.cpp
1>.\src\rebuild_thread.cpp(250) : error C2039: 'closesocket' : is not a member of 'ACE_Unmanaged_Singleton'
1> with
1> [
1> TYPE=RebuildThread,
1> ACE_LOCK=ACE_Thread_Mutex
1> ]
1>.\src\rebuild_thread.cpp(250) : error C2660: 'closesocket' : function does not take 0 arguments
RebuildThread类的定义如下:
class RebuildThread : public ACE_Task
{
public:
RebuildThread() {}
~RebuildThread() {}
virtual int svc();
int ProcessPacketFromFile( const char *filename );
static void ReconPacket( DumpFile &dumpfile, const struct pcap_pkthdr *header, const u_char *pkt_data );
void unbindNonActiveHash();
static void fini();
private:
ACE_Thread_Mutex mutex_;
};
typedef ACE_Unmanaged_Singleton REBUILD_THREAD;
其中REBUILD_THREAD::close()是在fini()函数中调用的,请问这是什么原因呢?
代码写错了。closesocket是API,和'ACE_Unmanaged_Singleton'无关。
QUOTE:
嗯,这个我知道,但是我调用的是ACE_Unmanaged_Singleton::close(),编译器为什么提示这样的错误呢?/* Some UNIX to Win32 conversions */
#define STDOUT_FILENO stdout
#define snprintf _snprintf
#define write _write
#define open _open
#define random rand
#define close closesocket
#define __func__ __FUNCTION__
所以就导致了如上的编译错误。