Linux 下 调用 大华SDK

非QT 等界面形式进行大华SDK的调用,主要就是解决Linux下调用大华SDK的一个环境搭建问题。

Makefile 文件

TARGET=netSdkDEMO
CC=gcc 
CXX=g++ 
CFLAGS=-g
CPPFLAGS=-DLINUX
INCLUDE=-I.
LIBS=-L.  -ldhnetsdk -ldhconfigsdk -lpthread

include Makefile.mk

Makefile.mk文件

CPP_SOURCES=$(wildcard *.cpp)
CPP_OBJECTS = $(patsubst %.cpp, %.o, $(CPP_SOURCES))
CPP_DEPENDS = $(patsubst %.cpp, %.d, $(CPP_SOURCES))

C_SOURCES=$(wildcard *.c)
C_OBJECTS = $(patsubst %.c, %.o, $(C_SOURCES))
C_DEPENDS = $(patsubst %.c, %.d, $(C_SOURCES))

.PHONY: all clean obj

all : $(TARGET)

$(TARGET) : obj
	$(CXX) $(CFLAGS) -o $@ $(CPP_OBJECTS) $(C_OBJECTS) $(LIBS) $(INCLUDE) 

obj : $(C_OBJECTS) $(CPP_OBJECTS)

-include $(C_DEPENDS)
-include $(CPP_DEPENDS)

$(CPP_OBJECTS) : %.o : %.cpp
	$(CXX) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< $(INCLUDE)

$(C_OBJECTS) : %.o : %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< $(INCLUDE)

$(CPP_DEPENDS) : %.d : %.cpp
	$(CXX) -M $(CPPFLAGS) $(CFLAGS) $(INCLUDE) $< > $@.$$$$;          \
	sed 's, \($*\)\.o[ :]*,\l.o $@ : ,g' < $@.$$$$ > $@;    \
	rm -f $@.$$$$
	
$(C_DEPENDS): %.d : %.c
	$(CC) -M $(CPPFLAGS) $(CFLAGS) $(INCLUDE) $< > $@.$$$$;           \
	sed 's, \($*\)\.o[ :]*,\l.o $@ : ,g' < $@.$$$$ > $@;    \
	rm -f $@.$$$$

clean: 
	rm -rf $(C_OBJECTS) $(CPP_OBJECTS) $(TARGET) $(CPP_DEPENDS) $(C_DEPENDS)

加载动态链接库的方法(大华官方提供的方法)

一、如果SDK各动态库文件和可执行文件在同一级目录下,则使用同级目录下的库文件;此时也可能报找不到库文件的错误,需要显示设置一下环境变量:export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./

二、如果不在同一级目录下,则需要将以上文件的目录加载到动态库搜索路径中,设置的方式有以下几种:

1、将网络SDK各动态库路径加入到LD_LIBRARY_PATH环境变量
    1)在终端输入:export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/XXX      只在当前终端起作用
    2) 修改~/.bashrc或~/.bash_profile,最后一行添加 export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/XXX,保存之后,使用source  .bashrc执行该文件 ,当前用户生效
    3.)修改/etc/profile,添加内容如第2条,同样保存之后使用source执行该文件  所有用户生效

2、在/etc/ld.so.conf文件结尾添加网络sdk库的路径,如/XXX,保存之后,然后执行ldconfig 

3、可以将网络sdk各依赖库放入到/lib64、/lib或usr/lib64、usr/lib下

4、可以在Makefile中使用-Wl,-rpath来指定动态路径,直接将dhnetsdk库以–l方式显示加载进来
    比如:-Wl,-rpath=/XXX -lhdhnetsdk 

下面是我的工程文件 

https://download.csdn.net/download/hilaph/10807126

你可能感兴趣的:(Linux 下 调用 大华SDK)