Hanshan.Hundsun.Api 1.0.2

Hundsun NSQ + LDP Bridge

跨平台的恒生接口桥接项目:

  • C++ 动态库封装恒生 NSQ 行情与 LDP 交易原生 SDK,对外导出稳定的 C 接口
  • C#/.NET 通过 P/Invoke 互操作调用 C++ 导出的 API,提供托管友好的类型与回调
  • Linux 使用 CMake 构建;Windows 使用 Visual Studio 2022 (VC++) 构建

项目结构

  • C++ 包装库
    • ldpapi_wrapper.h/.cpp:LDP 交易 API 封装与回调转发
    • nsqapi_wrapper.h/.cpp:NSQ 行情 API 封装与回调转发
    • lib/ldpapilib/nsqapi:供应商头文件与原生库(.so/.dll)
    • tests/:轻量示例/自检程序(C++)
    • CMakeLists.txt:跨平台构建脚本
  • C# 互操作层
    • Hundsun.Api.csproj:.NET 9 类库
    • HsLdpApi*.csHsNsqApi*.cs:P/Invoke、结构体、回调包装与示例
  • 配置
    • config/config/{debug,release}:示例配置(FENS、SDK、设备等)

依赖准备

  • 已获取恒生 NSQ/LDP 原生库与头文件,并放入:
    • Linux: lib/nsqapi/includelib/nsqapi/linux.x64lib/ldpapi/includelib/ldpapi/linux.x64
    • Windows: lib/nsqapi/win64lib/ldpapi/win64
  • Linux 需要:CMake ≥ 3.15、g++/clang、.NET SDK 9
  • Windows 需要:Visual Studio 2022(含 C++ 桌面开发)、.NET SDK 9

在 Linux 上构建

  • 构建 C++ 包装库
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

生成:

  • build/Hundsun.so

  • build/test_nsq_apibuild/test_ldp_api

  • 构建 C# 互操作库

cd ..
dotnet build Hundsun.Api.csproj -c Release

生成:

  • bin/Release/net9.0/Hundsun.Api.dll

运行联动

C# 通过 DllImport("Hundsun") 加载同名原生库。运行前需保证可找到 Hundsun.so 及依赖。

方式 A:复制到托管输出目录

cp build/Hundsun.so bin/Release/net9.0/

方式 B:使用环境变量(开发态推荐)

export LD_LIBRARY_PATH="$(pwd)/build:${LD_LIBRARY_PATH}"

提示:项目已移除对第三方库使用 patchelf 改 RPATH,请用 LD_LIBRARY_PATH 或将依赖 .so 与可执行/库放置在同目录。

在 Windows 上构建

  • 用 VS2022 打开 Hundsun.sln,选择 x64,构建原生 C++ 与 C# 项目
  • 确保 lib/ldpapi/win64lib/nsqapi/win64 中的供应商库能被链接/复制到输出目录(可在“生成事件”中复制到 $(OutDir)
  • C# 侧通过 DllImport("Hundsun") 加载 Hundsun.dll,需保证 Hundsun.dll 与依赖位于 bin\\{Config}\\net9.0 或系统 PATH 中

互操作与兼容性说明

  • 结构体对齐严格依据供应商头文件(HSDataType.h / HSSecuStruct.h):
    • 固定字符串使用 ByValTStrfixed byte[]
    • 基本类型映射:char -> byteHSNum -> int32HSPrice/HSVolume/HSBalance -> double
  • 回调使用 Cdecl 函数指针与 .NET 9 的 UnmanagedCallersOnly,避免 GC 移动;确保回调生命周期与原生侧一致
  • 若报“无法加载 Hundsun”/“找不到依赖”,优先检查:
    • Linux: LD_LIBRARY_PATH 是否包含 build/ 或依赖目录
    • Windows: PATH 是否包含 Hundsun.dll 及依赖目录

常见问题

  • 缺少 libHSSecuTradeApi.so 等:将供应商 .so 复制到 build/ 或托管输出目录,或设置 LD_LIBRARY_PATH
  • VS 链接失败:检查工具集、x64 配置、库与头文件路径
  • 回调或结构体异常:对照供应商头文件核对字段大小与 SizeConst

许可证

  • lib/* 下的供应商库归原厂商所有,按其授权使用;本包装层代码按内部要求分发

No packages depend on Hanshan.Hundsun.Api.

.NET 9.0

Version Downloads Last updated
1.0.2 10 2025/11/22