从dll导出C ++类会导致链接错误

时间:2016-04-27 10:00:55

标签: c++ dll lnk2019

我想从dll导出一个类。如果我把MIKROTIK_API(_declspec(dllexport)放在类名前面,我会收到链接错误。没有MIKROTIK_API,它会正确编译。

我已将_Exporting放在项目的预处理器定义中。我正在使用visual studio进行编译。

错误:MikrotikFace.obj:错误LNK2019:未解析的外部符号" public:__ thishisall MikrotikAPI :: MikrotikAPI(void)" (?? 0MikrotikAPI @@ QAE @ XZ)在函数" public中引用:__thiscall MikrotikFace :: MikrotikFace(void)" (?? 0MikrotikFace @@ @ QAE XZ)

两个主要文件:     MikrotikAPI.h(类MikrotikAPI驻留在我想要使用的功能)     MikrotikFace.h(我从dll导出类)

MikrotikFace.h

#include"MikrotikAPI.h"

Macro definition:

#ifdef _Exporting
#define MIKROTIK_API __declspec( dllexport )
#else 
#define MIKROTIK_API __declspec( dllimport )
#endif

Exporting class MikrotikFace:

class MIKROTIK_API MikrotikFace
{
public:
    MikrotikFace(){;}
   ~MikrotikFace(){;}

    // external functions
    int LoginToMKT(const std::string &strUsername, const std::string   &strPassword,
                    const std::string &strPort, const std::string &strIPAddr, int &nmerMKTErrorResult);

private:
    MikrotikAPI m_mktMikrotikAPI;    
};

0 个答案:

没有答案