实现"Singleton"模式时出错
Error while implementing the "Singleton" pattern
我在c++中尝试实现Singleton模式时遇到了以下问题:
- 未解析函数"private:__cdecl MaWinsock::MaWinsock(void)"中引用的外部符号__imp_WSAStartup(?0MaWinsock@@AEAA@XZ))
- 未解析函数"public:__cdecl MaWinsock::~MaWinsock(void)"中引用的外部符号__imp_WSACleanup(?1MaWinsock@@QEAA@XZ)
这是MaWinsock.h
#include <WinSock2.h>
class MaWinsock
{
WSADATA wsaData; // structure contenant les données de la librairie winsock à initialiser. représente la DLL.
MaWinsock(void);
static MaWinsock *instanceUnique;
public:
static MaWinsock *getInstance();
~MaWinsock(void);
};
这是MaWinsock.cpp
#include <iostream>
#include "Exception.h"
#include "MaWinsock.h"
using namespace std;
/* static */ MaWinsock* MaWinsock::instanceUnique = NULL;
/* static */ MaWinsock* MaWinsock::getInstance()
{
if (!instanceUnique) instanceUnique = new MaWinsock;
return instanceUnique;
}
MaWinsock::MaWinsock(void)
{
int r;
r = WSAStartup(MAKEWORD(2, 0), &wsaData); // MAKEWORD(2,0) sert à indiquer la version de la librairie à utiliser : 1 pour winsock et 2 pour winsock2
/* en cas de succès, wsaData a été initialisée et l'appel a renvoyé la valeur 0 */
if (r) throw Exception("L'initialisation a échoué");
cout << "initialisation winsock effectuée" << endl;
}
MaWinsock::~MaWinsock(void)
{
WSACleanup();
cout << "libération des ressources de la winsock effectuée" << endl;
}
非常奇怪的是,在另一个相关项目中,这段代码运行良好,但在这里,我不知道问题出在哪里
如果你们中有人熟悉这种模式,将不胜感激
感谢
为了使其工作,您应该在您的cpp文件中添加以下行:
#pragma comment(lib, "wsock32.lib")
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++ Singleton - Prevent ::instance() to variable
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 实现"Singleton"模式时出错