Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1c13ef429c |
7
.dockerignore
Normal file
7
.dockerignore
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
/.idea
|
||||||
|
/.git
|
||||||
|
/cmake-build-debug-visual-studio
|
||||||
|
/V6.1.9.45_build20220902_ArmLinux64_ZH_20240802154010_lib.zip
|
||||||
|
/V6.1.9.48_build20230410_linux64_20240829112751_lib.zip
|
||||||
|
/V6.1.9.48_build20230410_win64_20240829112623_lib.zip
|
||||||
|
/build
|
||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,7 +1,12 @@
|
|||||||
/.idea
|
/.idea
|
||||||
/cmake-build-debug-visual-studio
|
/cmake-build-debug-visual-studio
|
||||||
|
/cmake-build-release-visual-studio
|
||||||
*.lib
|
*.lib
|
||||||
*.dll
|
*.dll
|
||||||
*.so
|
*.so
|
||||||
*.a
|
*.a
|
||||||
*.zip
|
*.zip
|
||||||
|
/build
|
||||||
|
/arm64_linux_lib
|
||||||
|
/arm64_windows_lib
|
||||||
|
/amd64_linux_lib
|
||||||
@@ -1,9 +1,27 @@
|
|||||||
cmake_minimum_required(VERSION 3.29)
|
cmake_minimum_required(VERSION 3.15)
|
||||||
project(HikNetSDKPkg)
|
|
||||||
|
|
||||||
|
project(HikNetSDKPkg CXX)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
include_directories("./src/include/Hik/amd64")
|
|
||||||
add_compile_definitions(Export)
|
set(OS ${CMAKE_HOST_SYSTEM_NAME})
|
||||||
|
set(Arch ${CMAKE_HOST_SYSTEM_PROCESSOR})
|
||||||
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build)
|
||||||
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build)
|
||||||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build)
|
||||||
|
|
||||||
|
message(STATUS "Target Operating System: ${OS}")
|
||||||
|
message(STATUS "Target Architecture: ${Arch}")
|
||||||
|
|
||||||
|
if(OS STREQUAL "Windows")
|
||||||
|
set(CMAKE_DEBUG_POSTFIX "_win_amd64_d")
|
||||||
|
set(CMAKE_RELEASE_POSTFIX "_win_amd64")
|
||||||
|
elseif (Arch STREQUAL "x86_64" OR Arch STREQUAL "amd64")
|
||||||
|
set(CMAKE_DEBUG_POSTFIX "_linux_amd64_d")
|
||||||
|
set(CMAKE_RELEASE_POSTFIX "_linux_amd64")
|
||||||
|
elseif (Arch STREQUAL "aarch64" OR Arch STREQUAL "arm64")
|
||||||
|
set(CMAKE_DEBUG_POSTFIX "_linux_arm64_d")
|
||||||
|
set(CMAKE_RELEASE_POSTFIX "_linux_arm64")
|
||||||
|
endif ()
|
||||||
|
|
||||||
add_library(HikNetSDKPkg SHARED
|
add_library(HikNetSDKPkg SHARED
|
||||||
library.cpp
|
library.cpp
|
||||||
@@ -13,8 +31,34 @@ add_library(HikNetSDKPkg SHARED
|
|||||||
src/FormatTrans.cpp
|
src/FormatTrans.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
target_compile_definitions(HikNetSDKPkg PRIVATE Export)
|
||||||
|
|
||||||
target_link_directories(HikNetSDKPkg PUBLIC ./HCNetSDKamd64/lib)
|
if(Arch STREQUAL "x86_64" OR OS STREQUAL "Windows")
|
||||||
target_link_libraries(HikNetSDKPkg "HCNetSDK.lib")
|
target_include_directories(HikNetSDKPkg PRIVATE "./src/include/Hik/amd64")
|
||||||
target_link_libraries(HikNetSDKPkg "HCCore.lib")
|
elseif (Arch STREQUAL "aarch64")
|
||||||
target_link_libraries(HikNetSDKPkg "GdiPlus.lib")
|
target_include_directories(HikNetSDKPkg PRIVATE "./src/include/Hik/arm64")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if(OS STREQUAL "Windows")
|
||||||
|
target_link_directories(HikNetSDKPkg PRIVATE "./arm64_windows_lib")
|
||||||
|
target_link_libraries(HikNetSDKPkg PRIVATE "HCNetSDK.lib")
|
||||||
|
target_link_libraries(HikNetSDKPkg PRIVATE "HCCore.lib")
|
||||||
|
target_link_libraries(HikNetSDKPkg PRIVATE "GdiPlus.lib")
|
||||||
|
elseif (Arch STREQUAL "x86_64")
|
||||||
|
target_link_directories(HikNetSDKPkg PRIVATE "./amd64_linux_lib")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libHCCore.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libhcnetsdk.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libhpr.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libz.so")
|
||||||
|
elseif (Arch STREQUAL "aarch64")
|
||||||
|
target_link_directories(HikNetSDKPkg PRIVATE "./arm64_linux_lib")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libAudioRender.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libcrypto.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libHCCore.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libhcnetsdk.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libhpr.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libPlayCtrl.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libssl.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libSuperRender.so")
|
||||||
|
target_link_libraries(HikNetSDKPkg "libz.so")
|
||||||
|
endif ()
|
||||||
22
Dockerfile
Normal file
22
Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
FROM alpine:3.19 AS deps
|
||||||
|
|
||||||
|
WORKDIR /usr
|
||||||
|
|
||||||
|
RUN apk add gcc g++ cmake make acl
|
||||||
|
|
||||||
|
FROM alpine:3.19 AS build
|
||||||
|
|
||||||
|
WORKDIR /hikbuild
|
||||||
|
|
||||||
|
COPY --from=deps /usr /usr
|
||||||
|
COPY --from=deps /lib /lib
|
||||||
|
COPY . /hikbuild
|
||||||
|
|
||||||
|
RUN cmake . -D Arch=${TARGETARCH} -D CMAKE_BUILD_TYPE=RELEASE && make
|
||||||
|
|
||||||
|
FROM alpine:3.19 AS export
|
||||||
|
|
||||||
|
WORKDIR /home
|
||||||
|
COPY --from=build /hikbuild/build /home
|
||||||
|
|
||||||
|
#docker buildx build --platform linux/amd64,linux/arm64 --output type=local,dest=/hikbuild/ .
|
||||||
28
README.md
Normal file
28
README.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
## 已验证系统环境
|
||||||
|
|
||||||
|
| 架构 | 系统 |使用docker |
|
||||||
|
|:-------:|:-----------:|:-------:|
|
||||||
|
| aarch64 | alpine:3.19 | 🐳 |
|
||||||
|
| x86_64 | alpine:3.19 | 🐳 |
|
||||||
|
| x86_64 | windows 10 | |
|
||||||
|
|
||||||
|
## 编译流程
|
||||||
|
### 1. 下载库
|
||||||
|
在仓库的发行版中 将 HikNetSDK 标签下的不同架构的 lib 放在源码根目录中
|
||||||
|
```shell
|
||||||
|
D:.
|
||||||
|
│ V6.1.9.45_build20220902_ArmLinux64_ZH_20240802154010_lib.zip
|
||||||
|
│ V6.1.9.48_build20230410_linux64_20240829112751_lib.zip
|
||||||
|
│ V6.1.9.48_build20230410_win64_20240829112623_lib.zip
|
||||||
|
```
|
||||||
|
### 2.1 编译 Linux 部分
|
||||||
|
将下载的zip压缩文件 `ArmLinux64` 和 `linux64` 在源码目录解压,然后重命名
|
||||||
|
```shell
|
||||||
|
V6.1.9.45···ArmLinux64···.zip --解压后重命名为--> arm64_linux_lib
|
||||||
|
V6.1.9.48···linux64···.zip --解压后重命名为--> amd64_linux_lib
|
||||||
|
```
|
||||||
|
### 2.2 编译 Windows 部分
|
||||||
|
将下载的zip压缩文件 `win64` 在源码目录解压,然后重命名
|
||||||
|
```shell
|
||||||
|
V6.1.9.45···win64···.zip --解压后重命名为--> arm64_windows_lib
|
||||||
|
```
|
||||||
@@ -1,13 +1,18 @@
|
|||||||
#ifndef HIKVISION_NETWORK_SDK_PACKAGING_LIBRARY_LIBRARY_H
|
#ifndef HIKVISION_NETWORK_SDK_PACKAGING_LIBRARY_LIBRARY_H
|
||||||
#define HIKVISION_NETWORK_SDK_PACKAGING_LIBRARY_LIBRARY_H
|
#define HIKVISION_NETWORK_SDK_PACKAGING_LIBRARY_LIBRARY_H
|
||||||
|
|
||||||
#ifdef Export
|
#ifdef _WIN32
|
||||||
#define Omnimatrix __declspec(dllexport)
|
#ifdef Export
|
||||||
|
#define Omnimatrix __declspec(dllexport)
|
||||||
|
#else
|
||||||
|
#define Omnimatrix __declspec(dllimport)
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#define Omnimatrix __declspec(dllimport)
|
#define Omnimatrix
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ char* CheckTimeRegionWithMonth(void* PtrHIKNvr,int year,int month){
|
|||||||
res = HIKNvrObj->TimeToJson(select_time, &available_date_vec).dump();
|
res = HIKNvrObj->TimeToJson(select_time, &available_date_vec).dump();
|
||||||
}
|
}
|
||||||
char* cString = new char[res.size() + 1];
|
char* cString = new char[res.size() + 1];
|
||||||
strcpy_s(cString, res.size()+1,res.c_str());
|
std::strcpy(cString,res.c_str());
|
||||||
return cString;
|
return cString;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,6 +81,6 @@ char* CheckTimeRegionWithDay(void* PtrHIKNvr,int year,int month,int day){
|
|||||||
res = HIKNvrObj->TimeToJsonInDay(select_time, &available_time_vec).dump();
|
res = HIKNvrObj->TimeToJsonInDay(select_time, &available_time_vec).dump();
|
||||||
}
|
}
|
||||||
char* cString = new char[res.size() + 1];
|
char* cString = new char[res.size() + 1];
|
||||||
strcpy_s(cString, res.size()+1,res.c_str());
|
std::strcpy(cString,res.c_str());
|
||||||
return cString;
|
return cString;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user