我正在使用我无法控制的外部库,更确切地说是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可用。