zoukankan      html  css  js  c++  java
  • 静态变量动态库编译错误

    .h 头文件

    class MYNETENGINESHARED_API NetEngineManager :
    public ISafeBase,
    public INetModuleInInterface
    {
    friend class IObjectNetEngine;
    public:
    NetEngineManager(void);
    virtual ~NetEngineManager(void);

    private:
    static NetEngineManager* m_pInstance;
    public:
    static NetEngineManager* GetInstance(){return m_pInstance;}

    。。。

    .cpp源文件代码


    NetEngineManager* NetEngineManager::m_pInstance = NULL;
    NetEngineManager::NetEngineManager(void):
    ISafeBase(eModule_NetEngineManager)
    {
    if(m_pInstance == NULL)
    {
    m_pInstance = this;
    }
    }

    编译提示错误

    2> 所有输出均为最新。
    2>Link:
    2> 正在创建库 ....OutputDebugUploadEngine.lib 和对象 ....OutputDebugUploadEngine.exp
    2>stdafx.obj : error LNK2001: 无法解析的外部符号 "private: static class NetEngineManager * NetEngineManager::m_pInstance" (?m_pInstance@NetEngineManager@@0PAV1@A)
    2>XmlDatabase.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall IDatabaseInterface::IDatabaseInterface(void)" (??0IDatabaseInterface@@QAE@XZ),该符号在函数 "public: __thiscall CXmlDatabase::CXmlDatabase(void)" (??0CXmlDatabase@@QAE@XZ) 中被引用
    2>XmlDatabase.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall IDatabaseInterface::~IDatabaseInterface(void)" (??1IDatabaseInterface@@UAE@XZ),该符号在函数 __unwindfunclet$??0CXmlDatabase@@QAE@ABV0@@Z$1 中被引用
    2>....OutputDebugUploadEngine.dll : fatal error LNK1120: 3 个无法解析的外部命令

    解答如下:
    这是由于导出类的修饰错误,对于dll本身来讲,修饰应该是__declspec(dllexport),而对于调用者来讲,应该是__declspec(dllimport)。而为了正确的编译修饰,可以声明如下:
    #ifdef MY_DLL_EXPORT
    #define _DLL_EXPORT_ __declspec(dllexport)
    #else
    #define _DLL_EXPORT_ __declspec(dllimport)
    #endif
    将MY_DLL_EXPORT加到dll 工程的预编译定义中。
    现在你可以使用_DLL_EXPORT_宏来修饰你任何想导出的类或函数了

    预编译添加 MY_DLL_EXPORT。这个这样__declspec(dllexport) 和_declspec(dllimport)都会编译一下。_declspec(dllimport)管 头文件的 lib 连接。这样才能编译到lib里面。

     我估计这就是要没有输出静态lib,执行这条宏编译__declspec(dllimport)

  • 相关阅读:
    springMVC必须的jar包
    project---clean
    maven项目 启动报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    @ResponseBody 注解
    HttpServletRequest 需要导入xx包?
    Maven中GroupID和ArtifactID
    Java中包、类、方法、属性、常量的命名规则
    使用 @RequestMapping 注解,需要导入的包:spring-webmvc
    【杂题】【动态规划】【搜索】——洛谷P1441砝码称重
    搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
  • 原文地址:https://www.cnblogs.com/dwx-bzdcxy/p/14955558.html
Copyright © 2011-2022 走看看