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

Windows下用CMake调用预编译ONNXRuntime库的链接错误解决

问题解决步骤

1. 统一编译平台(核心问题)

错误中明确提示library machine type 'x64' conflicts with target machine type 'x86',这是触发后续链接错误的根本原因:你的项目编译目标为x86架构,但ONNXRuntime库是x64架构,二者平台不匹配导致函数符号格式不一致(x86的stdcall函数名带@N后缀,x64无此修饰),进而出现LNK2019未解析符号错误。

解决方式:

  • 命令行CMake配置:添加-A x64参数指定x64平台:
    cmake -S . -B build -A x64
    
  • CMake GUI配置:在点击"Configure"前,选择带x64后缀的生成器(例如Visual Studio 17 2022 - x64)。
  • CMakeLists.txt内强制指定:在project指令前添加代码:
    if(WIN32)
      set(CMAKE_GENERATOR_PLATFORM x64)
    endif()
    

2. 修正CMake配置,规范链接ONNXRuntime

优化原CMake脚本,确保动态库符号正确导入,同时自动复制运行时依赖:

cmake_minimum_required(VERSION 3.13)

# 先指定平台,再创建项目
if(WIN32)
  set(CMAKE_GENERATOR_PLATFORM x64)
endif()

project(myproject VERSION 0.1.0 LANGUAGES C CXX)

add_executable(myproject main.cpp)

set(ONNXRUNTIME_ROOTDIR ${CMAKE_SOURCE_DIR}/externals/onnxruntime)

# 查找ONNXRuntime导入库
find_library(ONNXRUNTIME_LIB 
             NAMES onnxruntime
             HINTS ${ONNXRUNTIME_ROOTDIR}/lib
             REQUIRED)

# 包含头文件(使用target_include_directories更符合CMake规范)
target_include_directories(myproject PRIVATE ${ONNXRUNTIME_ROOTDIR}/include)

# 定义ORT_DLL宏,确保动态库符号正确导入
target_compile_definitions(myproject PRIVATE ORT_DLL)

# 链接ONNXRuntime库
target_link_libraries(myproject PRIVATE ${ONNXRUNTIME_LIB})

# 自动复制ONNXRuntime的DLL到输出目录,避免运行时找不到依赖
add_custom_command(TARGET myproject POST_BUILD
                   COMMAND ${CMAKE_COMMAND} -E copy_if_different
                   ${ONNXRUNTIME_ROOTDIR}/lib/onnxruntime.dll
                   $<TARGET_FILE_DIR:myproject>)

3. 验证库架构匹配(可选)

如果不确定ONNXRuntime库的架构,可使用Visual Studio的dumpbin工具检查:
打开x64版本的Visual Studio命令提示符,执行:

dumpbin /headers C:\root\externals\onnxruntime\lib\onnxruntime.lib | findstr "machine"

若输出machine (x64),则确认库为x64架构,项目必须对应x64平台。

额外注意事项

  • 确保下载的ONNXRuntime预编译库与你的Visual Studio版本兼容(例如VS2022需下载标注vc17的库)。
  • 如果使用静态版ONNXRuntime库,需将ORT_DLL替换为ORT_STATIC宏,并链接所有附属依赖库,但你的场景为动态库(存在dll文件),无需此操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:20:17