You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 64位下Steam SDK 1.60调用GetSteamID崩溃求助

Windows 64位下Steam API 1.60调用GetSteamID崩溃问题

问题背景

在Windows 64位系统中使用Steam API v1.60时,执行以下代码会在GetSteamID调用处崩溃:

if (SteamAPI_InitEx(nullptr)) {
  if (SteamUser()) {
    printf("SteamUser() is valid.\n");
    try {
      CSteamID steamID = SteamUser()->GetSteamID();
      printf("SteamID: %llu\n", steamID.ConvertToUint64());
    } catch (const std::exception &e) {
      printf("Exception occurred: %s\n", e.what());
    }
  } else {
    printf("SteamUser() is nullptr.\n");
  }
  SteamAPI_Shutdown();
} else {
  printf("Failed to initialize Steam API.\n");
}

崩溃现象

  • 程序输出SteamUser() is valid.,说明SteamUser()返回非空指针,但调用GetSteamID时直接崩溃,无异常抛出
  • GDB调试显示崩溃发生在steamclient64.dll的Steam_NotifyMissingInterface函数:
Thread 1 "MainThrd" received signal SIGSEGV, Segmentation fault. 0x00007ffa5a3de225 in steamclient64!Steam_NotifyMissingInterface () from C:\Program Files (x86)\Steam\steamclient64.dll
  • 本地steamclient64.dll已更新至最新版本,尝试使用SteamAPI_Init()、SteamAPI_InitFlat()初始化API,结果一致
  • Linux系统下完全正常

更新尝试

按照建议修改代码后,崩溃情况未改变:

SteamErrMsg errMsg;
if (SteamAPI_InitEx(&errMsg) == k_ESteamAPIInitResult_OK) {
    auto steamUser = SteamUser();
    if (steamUser) {
        LOG_ERROR(logger, "SteamUser() is valid.");
        try {
            CSteamID steamID = steamUser->GetSteamID();
            LOG_ERROR(logger, "SteamID: {}", steamID.ConvertToUint64());
        } catch (const std::exception &e) {
            LOG_ERROR(logger, "Exception occurred: {}", e.what());
        }
    } else {
        LOG_ERROR(logger, "SteamUser() is nullptr.");
    }
    SteamAPI_Shutdown();
} else {
    LOG_ERROR(logger, "Failed to initialize Steam API.");
}

解决方案建议

  • 确认Steam客户端已登录且为最新版本,尝试重启Steam客户端后再测试
  • 检查程序编译配置:确保项目为64位编译,Steam API的头文件、库文件与系统位数完全匹配,禁止混用32位/64位资源
  • 验证steam_appid.txt:确保程序运行目录下存在该文件,且内容为正确的游戏AppID,Steam API初始化依赖此文件关联应用
  • 检查线程调用:Steam API要求所有接口调用在主线程执行,确保初始化和GetSteamID调用都在主线程
  • 替换Steam API文件:重新从Steamworks SDK中提取最新的steam_api64.dll及相关库文件,避免文件损坏或版本不匹配
  • 权限排查:尝试以管理员权限运行程序,确保Steam客户端和程序有足够的系统资源访问权限

内容的提问来源于stack exchange,提问作者Nathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:02:41