c++调用lz4库的函数提示未找到标识符

cardus 2018-08-08 09:50:35
很久没接触c++了,环境win10,IDE:VS2017
在cpp中调用lz4库的LZ4_decompress_safe函数,项目lib文件配置好了,代码补全里也有该函数,头文件lz4.h通过附加包含目录引入,
lib文件配置如图
用ctrl也能点进定义里,但是还是报找不到LZ4_decompress_safe这个标识符
代码如下
#include "lz4.h"
#include "zlib.h"
#include "stdafx.h"
#include <string>
#include <io.h>
#include <direct.h>
struct st_NpkHeader
{
int _magic;// [_offset + 0]
int _count;// [_offset + 4] size(count * 28)
int _unknonw2;
int _unknonw3;
int _bUseTrunkCompressType;
int _offset;
};

struct st_NpkTrunk
{
int _trunkHash;
int _dataOffset;
int _compressSize;
int _realSize;
int _unknown1;
int _unknonw2;
int _compressType;
};
std::string GetNpkFileName(char *pData, unsigned int maxLen)
{
std::string name;
for (int i = 0; i < maxLen; ++i)
{
if ((pData[i] >= 'a' && pData[i] <= 'z')
|| (pData[i] >= 'A' && pData[i] <= 'Z'))
{
name += pData[i];
}
}
return name;
}
int _tmain(int argc, char* argv[])
{
if (argc < 2)
{
printf("%s npkFile\n", argv[0]);
return 0;
}
FILE *fp = fopen(argv[1], "rb");
if (!fp)
{
return 0;
}
unsigned int nFileLen = 0;
fseek(fp, 0, SEEK_END); //定位到文件末
nFileLen = ftell(fp); //文件长度

fseek(fp, 0, SEEK_SET);

st_NpkHeader npkHeader;
fread(&npkHeader, sizeof(npkHeader), 1, fp);
if (npkHeader._magic != 0x4b50584e)
{
printf("not npk file\n");
return 0;
}
fseek(fp, 0, SEEK_SET);

st_NpkTrunk* pNpkTrunkList = new st_NpkTrunk[npkHeader._count];
std::string strDir = "./Dump";
if (_access(strDir.c_str(), 0) != 0)
{
_mkdir(strDir.c_str());
}
fseek(fp, npkHeader._offset, SEEK_SET);
int nRSize = fread(pNpkTrunkList, sizeof(st_NpkTrunk), npkHeader._count, fp);
for (int i = 0; i < nRSize; ++i)
{
fseek(fp, pNpkTrunkList[i]._dataOffset, SEEK_SET);
char *pSrc = new char[pNpkTrunkList[i]._compressSize];
fread(pSrc, pNpkTrunkList[i]._compressSize, 1, fp);
char *pDst = new char[pNpkTrunkList[i]._realSize];
if (pNpkTrunkList[i]._compressType == 2)
{
LZ4_decompress_safe(pSrc, pDst, pNpkTrunkList[i]._compressSize, pNpkTrunkList[i]._realSize);
}
else if (pNpkTrunkList[i]._compressType == 1)
{
int realSize = pNpkTrunkList[i]._realSize;
int nRet = uncompress((Bytef *)pDst, (uLongf*)&realSize, (Bytef *)pSrc, pNpkTrunkList[i]._compressSize);
}
else
{
memcpy(pDst, pSrc, pNpkTrunkList[i]._realSize);
}
char fileName[126];
std::string format = GetNpkFileName(pDst, 5);
sprintf_s<126>(fileName, "%s/%x.%s", strDir.c_str(), pNpkTrunkList[i]._trunkHash, format.c_str());
FILE *fp2 = fopen(fileName, "wb");
fwrite(pDst, pNpkTrunkList[i]._realSize, 1, fp2);
fclose(fp2);

delete[] pSrc;
delete[] pDst;
}
return 0;
}

请大佬赐教!
...全文
722 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
d_c_w 2018-12-11
  • 打赏
  • 举报
回复
请问下lz4库是从哪里下载的?
赵4老师 2018-08-09
  • 打赏
  • 举报
回复
项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项
项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧