我创建了一个C ++类来提供操作互斥量的方法,并且该方法应该可以在Windows以及基于Linux的系统上运行。当我在不将类包含在命名空间中的情况下编译此代码时,它将编译并运行。但是,当我将其包含在命名空间中时,所有静态方法都会出现编译时错误,下面是一个示例。
未定义的引用 `mutexns :: MutexHandler :: Down(pthread_mutex_t *)'
我还没有从命名空间中使用此类的运气。任何和所有建议将不胜感激。预先谢谢你。
我正在Ubuntu 16.04计算机上使用g ++编译器。
g ++(Ubuntu 5.4.0-6ubuntu1〜16.04.10)5.4.0 20160609
以下是导致上述编译时错误的类定义。
#ifndef MUTEXHANDLER_H_
#define MUTEXHANDLER_H_
namespace mutexns
{
#ifdef WIN32
#include <windows.h>
#define MUTEX HANDLE
#else
#include <pthread.h>
#define MUTEX pthread_mutex_t
#endif
typedef enum
{
SUCCESS = 0, // Operation successful
ERR_UNKNOWN = -1, // An unknown error occurred
ERR_MUTEX_CREATION = -2, // Error creating mutex
ERR_MUTEX_LOCK = -3, // Error acquiring lock
ERR_MUTEX_UNLOCK = -4, // Error releasing lock
} MUTEX_ERROR;
class MutexHandler
{
private:
MutexHandler ();
public:
static MUTEX_ERROR
Initialize (MUTEX *mutex);
static MUTEX_ERROR
Down (MUTEX *mutex);
static MUTEX_ERROR
Up (MUTEX *mutex);
static MUTEX_ERROR
TryDown (MUTEX *mutex); // Only for Linux
};
}
#endif /* MUTEXHANDLER_H_ */