#!/bin/bash # 获取版本号(从项目文件中) version=$(grep -o '[^<]*' ThreatSource/ThreatSource.csproj | sed 's/\(.*\)<\/Version>/\1/') if [ -z "$version" ]; then echo "Error: Could not find version number in ThreatSource.csproj" exit 1 fi # 创建发布目录(如果不存在) mkdir -p publish # 设置打包文件名 package_name="ThreatSourceNative-${version}" package_dir="publish/${package_name}" # 创建临时目录 mkdir -p "${package_dir}/bin" mkdir -p "${package_dir}/include" # 复制文件 cp ThreatSourceNative/bin/Release/x64/ThreatSourceNative.dll "${package_dir}/bin/" cp ThreatSource/bin/Release/net8.0/ThreatSource.dll "${package_dir}/bin/" cp ThreatSource/bin/Release/net8.0/ThreatSource.deps.json "${package_dir}/bin/" cp ThreatSourceNative/include/threat_source.h "${package_dir}/include/" # 创建说明文件 cat > "${package_dir}/README.md" << EOL # ThreatSource Native Library 版本:${version} ## 文件说明 - bin/ThreatSourceNative.dll - 原生接口库 - bin/ThreatSource.dll - 核心库 - bin/ThreatSource.deps.json - 依赖配置文件 - include/threat_source.h - C接口头文件 ## 使用方法 1. 将 bin 目录下的所有 DLL 文件复制到你的程序目录 2. 将 include 目录下的头文件添加到你的项目中 3. 在代码中包含头文件: \`\`\`cpp #include "threat_source.h" \`\`\` ## 示例代码 \`\`\`cpp #include "threat_source.h" #include int main() { // 初始化仿真 if (TS_CreateSimulation() != THREATSOURCE_SUCCESS) { printf("Failed to create simulation\\n"); return 1; } // 创建导弹 const char* missile_id = "missile1"; int result = TS_CreateMissile( missile_id, 0, 0, 0, // 初始位置 0, 0, 0, // 初始速度 1000, // 最大速度 10, // 最大加速度 30, // 最大飞行时间 5000, // 最大飞行距离 50 // 质量 ); if (result != THREATSOURCE_SUCCESS) { char error[256]; TS_GetLastError(error, sizeof(error)); printf("Failed to create missile: %s\\n", error); return 1; } // 激活并发射导弹 TS_ActivateMissile(missile_id); TS_FireMissile(missile_id); // 仿真主循环 double deltaTime = 0.01; int is_active = 1; while (is_active) { TS_UpdateSimulation(deltaTime); TS_IsMissileActive(missile_id, &is_active); } // 清理 TS_DestroySimulation(); return 0; } \`\`\` ## 注意事项 1. 确保所有 DLL 文件在运行时可以被找到 2. 检查每个函数的返回值,确保调用成功 3. 如果函数返回错误,使用 TS_GetLastError 获取详细信息 EOL # 创建 zip 文件 cd publish zip -r "${package_name}.zip" "${package_name}" # 清理临时目录 rm -rf "${package_name}" echo "Package created: publish/${package_name}.zip"