为啥编译时出现cannot find lz错误,怎么解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥编译时出现cannot find lz错误,怎么解决相关的知识,希望对你有一定的参考价值。
编译时出现cannot find lz错误,是设置错误造成的,解决方法如下:
1、首先在使用angular-cli开发处理Base64,出现了编译错误【error TS2304: Cannot find 】。
2、首先终端执行命令【npm i -g typescript@next】安装成功后继续执行命令【npm i --save-dev @types/node】。
3、然后在需要的Ts文件头。
4、引用【import Buffer from 'buffer';】。
5、然后查看编译结果,就不会在提示编译错误了。
参考技术A 一、编译链接的问题 ,主要的原因是库文件并没有导入的ld检索目录中。二、解决:
需要安装zlib-dev这个包:
1)在线安装命令为:apt-get install zlib1g-dev。
2)在线安装命令为:yum install zlib-devel。如果需要管理员权限,建议在上述命令前加sudo。 参考技术B 是编译链接的问题 cannot find -lz 吗? 如果是的话,看这个办法:
./configure .............参数.......................完了后
执行
make LIBS="libz.so.1.2.3 libz.a"
make install
将libz.a拷贝到/usr/lib/目录下
ldconfig -v本回答被提问者和网友采纳 参考技术C 是编译链接的问题 cannot find -lz
./configure .............参数.......................完了后.
执行
make LIBS="libz.so.1.2.3 libz.a".
make install.
将libz.a拷贝到/usr/lib/目录下.
ldconfig -v.
提示缺少vpath.c这个文件。或者别的
你下载的源码不全。或者configure文件有问题
你试着在终端下输入find / -name "vpath.c"看看能不能找到. 参考技术D 我也有类似的问题。1G的组棒接读卡器,在pc上用wbsf_win init后灌了一个linkcross一切正常。用一个西数80G影片,同样在pc上init灌了link和RE4,接在wii上显示无游戏,真是郁闷。另外我的wii用usbl1.1还无法直接向硬盘灌,提示非wii碟(机器:3.1j+d2c,安装了rev9)
为啥我在使用模板函数时出现编译错误
【中文标题】为啥我在使用模板函数时出现编译错误【英文标题】:Why do i get compile error while using template function为什么我在使用模板函数时出现编译错误 【发布时间】:2020-07-17 11:52:03 【问题描述】:我有一个基类。
#include <string.h>
class Channel
private:
std::string stdstrName;
public:
Channel() : stdstrName("CHANNEL")
Channel(std::string name) : stdstrName(name)
void PrintName() std::cout << stdstrName << std::endl;
;
由 Position 类继承。
class PositionChannel : public Channel
public:
std::vector<int> keyframes;
PositionChannel() : Channel("POSITION") , keyframes( 1 , 2, 3 )
;
有一个导演类,它的数据成员是频道类。
#include "Channel.h"
#include <memory>
class Director
private:
std::vector<std::shared_ptr<Channel>> channels;
public:
void AddChannel(std::shared_ptr<Channel> chn) channels.push_back(chn);
void GetChannel(Channel **chn) *chn = channels[0].get();
;
现在在主函数中。
// Free function
template<typename T>
void GetChannel(Director *dir)
T *chn;
dir->GetChannel(&chn);
Director dir;
PositionChannel channel;
std::shared_ptr<Channel> channelPointer = std::make_shared<Channel>(channel);
dir.AddChannel(channelPointer);
GetChannel< PositionChannel>(&dir); // here i get error
这是错误消息 error C2664: ' cannot convert argument 1 from 'T **' to 'Channel **
如果我将模板函数更改为非模板函数,则不会出现任何错误。
【问题讨论】:
“取消模板化”GetChannel
使用 PositionChannel* chn;
也不起作用。问题的一个最小示例是int main() PositionChannel* pc; Channel** c = &pc;
。
就像你做的一样:PositionChannel* chn; dir.GetChannel(&chn);
。那样有用吗?没有。
【参考方案1】:
在你GetChannel
调用中,&chn
参数的类型是PositionChannel**
,但是Director::GetChannel
参数的类型是Channel**
。这两种类型不可兑换;例如,请参阅这个问题:Conversion of pointer-to-pointer between derived and base classes?。
我不确定你的意图是什么,因为代码没有多大意义,但你可以重新定义GetChannel
,如下所示:
template<typename T>
void GetChannel(Director *dir)
Channel* ptr;
dir->GetChannel(&ptr);
T *chn = ptr;
【讨论】:
【参考方案2】:T
可以是任何类型,您不能将其转换为任何类型的Channel
。
可能有一些方法可以使其与模板一起使用,但我觉得通过使用多态性可以更轻松地解决您的问题:
void GetChannel(Channel* chn, Director *dir)
dir->GetChannel(&chn);
然后chn
可以是从Channel
派生的任何类型。
【讨论】:
OP不想将任何类型转换为Channel
,而是Channel
的子类。
我猜,但这是同样的问题。 T 太通用了,不能按原样使用,不是吗?
@ShadowMitia 是的,我可以在没有非模板函数的情况下做到这一点,但想检查这是否可以通过模板完成。
@Summit 对,有点误解了你的问题。我敢肯定有办法做到这一点,但我不会知道他们^^
@Summit 非模板版也不行:godbolt.org/z/v69hjE【参考方案3】:
是的,Daniel Langr 已经给出了正确答案。如果类是派生的,我在模板中添加了一个检查。
#include <type_traits>
class Channel
public:
virtual ~Channel() = default;
;
class PositionChannel : public Channel
;
struct Director
void GetChannel(Channel **c)
;
template <typename T,
typename = typename std::enable_if<std::is_base_of<Channel, T>::value, T>::type>
void GetChannel(Director *dir)
Channel *chn;
dir->GetChannel(&chn);
T* ptr = static_cast<T*>(chn);
int main(void)
Director dir;
GetChannel<PositionChannel>(&dir);
return 0;
【讨论】:
以上是关于为啥编译时出现cannot find lz错误,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章
PyQt5 Pyinstaller时出现错误Cannot find PyQt5 plugin directories
Ubuntu下PHP动态编译出现Cannot find autoconf的解决方法
centos yum安装时出现 cannot find a valid baseurl for repo: addons
CentOS 6.7 编译PHP7 make时出现错误:undefined reference to `libiconv_close’
vue启动项目时出现的错误Error: Cannot find module 'D:\node_modules\npm\bin\npm-cli.js'