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/ldpapi、lib/nsqapi:供应商头文件与原生库(.so/.dll)tests/:轻量示例/自检程序(C++)CMakeLists.txt:跨平台构建脚本
- C# 互操作层
Hundsun.Api.csproj:.NET 9 类库HsLdpApi*.cs、HsNsqApi*.cs:P/Invoke、结构体、回调包装与示例
- 配置
config/与config/{debug,release}:示例配置(FENS、SDK、设备等)
依赖准备
- 已获取恒生 NSQ/LDP 原生库与头文件,并放入:
- Linux:
lib/nsqapi/include、lib/nsqapi/linux.x64,lib/ldpapi/include、lib/ldpapi/linux.x64 - Windows:
lib/nsqapi/win64,lib/ldpapi/win64
- Linux:
- 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.sobuild/test_nsq_api、build/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/win64、lib/nsqapi/win64中的供应商库能被链接/复制到输出目录(可在“生成事件”中复制到$(OutDir)) - C# 侧通过
DllImport("Hundsun")加载Hundsun.dll,需保证Hundsun.dll与依赖位于bin\\{Config}\\net9.0或系统 PATH 中
互操作与兼容性说明
- 结构体对齐严格依据供应商头文件(
HSDataType.h/HSSecuStruct.h):- 固定字符串使用
ByValTStr或fixed byte[] - 基本类型映射:
char -> byte、HSNum -> int32、HSPrice/HSVolume/HSBalance -> double
- 固定字符串使用
- 回调使用 Cdecl 函数指针与 .NET 9 的
UnmanagedCallersOnly,避免 GC 移动;确保回调生命周期与原生侧一致 - 若报“无法加载 Hundsun”/“找不到依赖”,优先检查:
- Linux:
LD_LIBRARY_PATH是否包含build/或依赖目录 - Windows:
PATH是否包含Hundsun.dll及依赖目录
- Linux:
常见问题
- 缺少
libHSSecuTradeApi.so等:将供应商 .so 复制到build/或托管输出目录,或设置LD_LIBRARY_PATH - VS 链接失败:检查工具集、x64 配置、库与头文件路径
- 回调或结构体异常:对照供应商头文件核对字段大小与
SizeConst
许可证
lib/*下的供应商库归原厂商所有,按其授权使用;本包装层代码按内部要求分发
No packages depend on Hanshan.Hundsun.Api.
.NET 9.0
- Disruptor (>= 6.0.1)
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.2 | 10 | 2025/11/22 |