助记

本文提供了软件开发过程中的多种实用技巧和解决方案,包括跨平台工程转换、库链接、Git克隆问题解决、忽略文件设置、网络配置、WireShark过滤、Scons构建配置、静态库合并、文件编码问题及系统兼容性等,覆盖从项目管理到具体技术实施的广泛内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博客转载方法:右键->审查->article_content->copy
live555官方类图:http://www.live555.com/liveMedia/doxygen/html/inherits.html

QT Creator 工程转VS工程:

命令行运行:qmake -tp vc XXX.pro
会生成文件XXX.vcxproj
ps:如果找不到qmake需要设置环境变量,该文件在QT安装目录的bin文件夹下面

VS开发QT 应用程序时出现std::cout<< 无法输出的情况,并且控制台也没有弹出

解决方法: 工程->属性->配置属性->链接器->系统->子系统中将 窗口(/SUBSYSTEM:WINDOW) 改为 控制台(/SUBSYSTEM:CONSOLE)

VS工程配置宏:

$(SolutionDir)$(Platform)\$(Configuration)

VS项目管理文件夹目录:

**.sln:
   P1
   		*.cpp
   		*.h
        P1.vcxproj
        P1.vcxproj.filters
        P1.vcxproj.user
    P2
        *.cpp
        *.h
        P2.vcxproj
        P2.vcxproj.filters
        P2.vcxproj.user

链接live555库的代码,需要链接库Ws2_32.lib
live555rtspclient获取到的码流,是裸码流,需要加0x00,0x00,0x00,0x01,的NAL头才能解码

git clone 失败,错误提示:

	$ git clone https://github.com/boostorg/boost.git
	Cloning into 'boost'...
	remote: Counting objects: 183543, done.
	remote: Compressing objects: 100% (69361/69361), done.
	fatal: The remote end hung up unexpectedly
	fatal: early EOF
	fatal: index-pack failed

解决办法:

1、clone 目录,生成本地.git文件夹,然后终止下载
2、修改./git/config文件,[core]下添加compression = -1:

	[core]
	    compression = -1

GIT忽略文件格式:

编辑文件:.git\info\exclude

# 忽略掉所有文件名是 foo.txt的文件.
foo.txt

# 忽略所有生成的 html文件,
*.html

# foo.html是手工维护的,所以例外.
!foo.html

# 忽略所有.o和 .a文件.
*.[oa]

# 忽略*.o和*.a文件
 *.[oa]
 
# 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b

# 忽略dbg文件和dbg目录
dbg

# 只忽略dbg目录,不忽略dbg文件
dbg/

# 只忽略dbg文件,不忽略dbg目录
dbg
!dbg/

# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内
/dbg

centos虚拟机启动时候不自动连接网络处理方法:

 vim /etc/sysconfig/network-scripts/ifcfg-ens33(ifcfg-ens33这个文件因不同虚拟机而不同)
ONBOOT=no 改为 yes
service network restart 
PS:
	ONBOOT=no  意思是:系统在启动时不激活网卡   
	ONBOOT=yes  意思是:系统在启动时激活网卡  


WireShark:

过滤IP:
	ip.addr==192.168.101.8
	ip.dst==192.168.101.8;
	Ip.src==192.168.101.8
	
过滤端口:
	tcp.port==80
	tcp.dstport==80
	tcp.srcport==80
IP+端口:
	ip.addr==192.168.101.8 and tcp.port==80
HTTP包过滤:
	http.request.method=="GET",
	http.request.method=="POST";
	ip.src==192.168.101.8 and http

Scons


参考文章:https://www.ibm.com/developerworks/cn/linux/l-cn-scons/index.html

源码目录下创建SConstruct 文件,是socns配置文件
Program(‘helloscons.c’)
Program(‘myscons, ‘helloscons.c’)
Program(‘helloscons2’, [‘helloscons2.c’, ‘file1.c’, ‘file2.c’],
LIBS = ‘m’,
LIBPATH = [’/usr/lib’, ‘/usr/local/lib’],
CCFLAGS = ‘-DHELLOSCONS’)
Program(‘helloscons2’, Glob(’*.c’)

配置文件中 LIBS,LIBAPTH 和 CCFLAGS 是 SCons 内置的关键字,它们的作用如下:

LIBS: 显示的指明要在链接过程中使用的库,如果有多个库,应该把它们放在一个列表里面。这个例子里,我们使用一个称为 m 的库。
LIBPATH: 链接库的搜索路径,多个搜索路径放在一个列表中。这个例子里,库的搜索路径是 /usr/lib 和 /usr/local/lib。
CCFLAGS: 编译选项,可以指定需要的任意编译选项,如果有多个选项,应该放在一个列表中。这个例子里,编译选项是通过 -D 这个 gcc 的选项定义了一个宏 HELLOSCONS。
我一直在尝试让scons将exe,obj,lib和dll文件输出到特定的构建目录。

我的文件结构如下所示:

/projectdir
  /build
    /bin
    /obj
  /source
    /subdirs
    /..
  SConstruct

SConstruct文件如下所示:

env.VariantDir('build', 'source', duplicate = 0)
env.Program('Hierarchy', source = ['source/sconstest.cpp', 'source/utils/IntUtil.cpp'])

合并静态库的方法:

	Windows:
		VS项目-》属性-》配置属性-》库管理器-》常规-》附加依赖项、附加库目录  添加需要合并的静态库
		
	Linux:
		ar x /usr/local/lib/A.a
		ar x /usr/local/lib/B.a
		ar x /usr/local/lib/C.a
		ar cru libABC.a *.o
		ranlib libABC.a

winsock2.h与windows.h包含顺序

#include <winsock2.h> //在前
#include <windows.h> //在后

否则会有编译错误:

error C2011: 'sockaddr' : 'struct' type redefinition

VS UTF-8 no BOM文件问题
解决办法:打开 https://marketplace.visualstudio.com/ 搜索 utf-8 如下:(之后保存的文件就都是UTF-8 no BOM的了)
在这里插入图片描述

vmware workstation15.5注册码:

永久激活密钥
	UG5J2-0ME12-M89WY-NPWXX-WQH88

CentOS上:/lib/ld-linux.so.2: bad ELF interpreter问题处理:

#因为32位程序安装到了64位机器上了
yum install glibc.i686

64位系统与32位系统编程区别:
64位系统指针8字节,32位系统指针4字节,不能用int类型转,要用long

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值