当仅影响静态方法时,如何解决C ++中的链接器错误?

问题描述 投票:0回答:1

我正在使用我无法控制的外部库,更确切地说是ADTF流库。我已链接到Visual Studio 2019中的此库(使用VS 2010平台工具集)。为此,我将include目录添加到

ProjectName -> Properties -> C/C++ -> General, 

到包含lib的文件夹的路径

ProjectName -> Properties -> Linker -> General 

和库的名称(adtfstreamingD_280.lib)到

ProjectName -> Properties -> Linker -> Input.

没有,我得到链接器错误,但仅对于静态类方法,对于非静态方法没有链接器错误。有谁知道如何解决这样的问题?任何帮助将不胜感激。

我的代码:

头文件:

#ifndef _DAT_HANDLER_H_
#define _DAT_HANDLER_H_

#include <string>
#include <stdint.h>

#include "adtf_streaming.h"

class DatHandler
{
public:
    DatHandler();
    ~DatHandler();
    void Load(std::string datFilePath);
    int32_t GetNumOfStreams();

protected:

private:
    // Resources are handled by ADTF
    adtfstreaming::IADTFFileReader* m_fileReader;   

};
#endif // _DAT_HANDLER_H_

cpp文件:

#include "DatHandler.h"

DatHandler::DatHandler() : m_fileReader(nullptr)
{
    // do nothing
}

DatHandler::~DatHandler()
{
    if (nullptr != m_fileReader)
    {
        m_fileReader->Close();
        adtfstreaming::IADTFFileReader::Release(m_fileReader);
    }
}

int32_t DatHandler::GetNumOfStreams()
{
    int32_t streamCount;
    tResult res = m_fileReader->GetStreamCount(streamCount);
    if (IS_FAILED(res))
    {
        return -1;
    }
    return streamCount;
}

void DatHandler::Load(std::string path)
{
    if (nullptr == m_fileReader)
    {
        m_fileReader = adtfstreaming::IADTFFileReader::Create();
    }
    else
    {
        m_fileReader->Close();
    }
    m_fileReader->Open(path.c_str());
}

错误(用德语,不知道如何获取英文错误输出):

Error   LNK2019 Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static long __cdecl adtfstreaming::IADTFFileReader::Release(class adtfstreaming::IADTFFileReader *)" (__imp_?Release@IADTFFileReader@adtfstreaming@@SAJPAV12@@Z)" in Funktion ""public: __thiscall DatHandler::~DatHandler(void)" (??1DatHandler@@QAE@XZ)".

Error   LNK2019 Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class adtfstreaming::IADTFFileReader * __cdecl adtfstreaming::IADTFFileReader::Create(void)" (__imp_?Create@IADTFFileReader@adtfstreaming@@SAPAV12@XZ)" in Funktion ""public: void __thiscall DatHandler::Load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Load@DatHandler@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)".

Error   LNK1120 2 nicht aufgelöste externe Verweise.    

编辑:也许我也应该提到我只有ADTF流库2.8.0可用。

c++ visual-studio dll linker
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.