Linux 部署C++音频读取方法代码遇到的问题:

举报
墨理学AI 发表于 2022/01/14 00:13:52 2022/01/14
【摘要】 参考链接:No such file or directory #include <io.h> firstError: io.h: No such file 用命令查找io.h所在位置: fi...

参考链接:No such file or directory #include <io.h>
firstError: io.h: No such file

用命令查找io.h所在位置:
find /usr/include -name “io.h”,
结果发现在/usr/include下没有,但在/usr/include/x86_64-linux-gnu/sys 或者 /usr/include/sys 下有
这个取决于你的服务器类型是ubuntu 还是 CentOS
第一种解决办法——copy该头文件到 /usr/include 目录下:
这个方法可能需要 root 权限 才能执行如下命令

用命令把io.h复制到/usr/include下:

sudo  cp /usr/include/x86_64-linux-gnu/sys/io.h  /usr/include
或者
sudo  cp /usr/include/sys/io.h  /usr/include

  
 
  • 1
  • 2
  • 3

第二种解决办法——修改头文件的引入路径(推荐):
本来我们引入为:

 #include <io.h>

  
 
  • 1

修改为

 #include <sys/io.h>

  
 
  • 1

对,讲道理这种方法应该在生产环境下更合适些的吧!!!

second: fatal error: windows.h: No such file or directory
我这里Windows 里面引用了 #include <windows.h> ,使用下面的方法测量函数运行时间

#include <iostream>
#include <windows.h>
using namespace std;
void timeTest()
{
	for(int i =0;i<1000;i++)
		cout<<i<<endl; 
}

int main()
{
	long start_time = GetTickCount();
  	timeTest();
	long end_time = GetTickCount();
    cout << "Running Time:" << end_time - start_time << "ms" << endl;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

代码迁移到Linux下报错,找不到 windows.h。
于是选择使用Linux下的另外一种测量函数运行时间的方法,使用 #include <time.h>头文件,代码如下:

#include <iostream>
#include <time.h>
using namespace std;

void timeTest()
{
	for(int i =0;i<1000;i++)
		cout<<i<<endl; 
}

int main()
{
	clock_t start, ends;
	start = clock();
 	timeTest();
	ends = clock();
	cout << "Running Time: " << ends - start<<" ms" << endl;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

最终准确的函数运行时间度量方法——推荐使用:
C++的<time.h>头文件中有time和clock可以用来计算时间,但是“#include ”中提供了更加精确的统计时间的方法。
下面的代码支持Windows 和 Linux,但是要求编译器必须支持C++11

#include <iostream>
#include <chrono>
using namespace std;
using std::chrono::high_resolution_clock;
using std::chrono::milliseconds;

void timeTest()
{
	for(int i =0;i<1000;i++)
		cout<<i<<endl; 
}

int main()
{
    high_resolution_clock::time_point beginTime = high_resolution_clock::now();
    
  	timeTest();
  
    high_resolution_clock::time_point endTime = high_resolution_clock::now();
    milliseconds timeInterval = std::chrono::duration_cast<milliseconds>(endTime - beginTime);
    cout << "Running Time:" << timeInterval.count()  << "ms" << endl;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

third: error: ‘DIR’ was not declared in this scope
error: ‘opendir’ was not declared in this scope

引入头文件 #include <dirent.h>
Linux下c++遍历文件夹中文件及读取绝对路径会用到这个头文件
我的链接

fourth: error: scoped enums only available with -std=c++11 or -std=gnu++11
参考链接
需要 使用 在Linux 下 使用 C++ 11来编译文件,在 本身的 命令后面 添加 -std=c++11 即可

g++  test.cpp  main.cpp  -std=c++11

  
 
  • 1

fifth: 我的cpp文件上传到Linux服务器中文出现乱码
中文注释乱码原因:windows系统的VS2017 cpp 文件的编码可能不是utf-8,需要设置一下文件的编码为utf-8
解决办法:Vs2017设置文件编码为utf-8
参考链接

文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。

原文链接:positive.blog.csdn.net/article/details/84027913

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。