__declspec( dllimport ) 的问题

__declspec( dllimport ) 的问题,第1张

declspec(dllexport)是用于灶禅避隐晌尘免需要自己写def文件谨备的。如果你在其他模块中包_declspec(dllexport)的头文件,这些项目的导出表中也会生成一个同名导出函数

.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>正在创建库 ..\..\Output\Debug\UploadEngine.lib 和对象 ..\..\Output\返扰Debug\UploadEngine.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>..\..\Output\Debug\UploadEngine.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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8251072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存