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

CMake项目集成mimalloc遇阻:无法生成override DLL且运行报错

解决方案

1. 修正CMake配置,生成并链接mimalloc-override

修改你的CMakeLists.txt,调整目标链接与核心配置:

cmake_minimum_required(VERSION 3.23)
project(OpenGLPlayground2)

set(CMAKE_CXX_STANDARD 20)
set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(RES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/res")
set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")

# 统一输出目录,避免DLL路径问题
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")

add_executable(OpenGLPlayground2 src/main.cpp)

set(MIMALLOC_DIR "${LIB_DIR}/mimalloc-master")
# 开启override模式的核心配置
set(MI_OVERRIDE ON CACHE BOOL "Override default malloc" FORCE)
set(MI_BUILD_SHARED ON CACHE BOOL "Build shared library" FORCE)
set(MI_USE_CXX ON CACHE BOOL "Use C++" FORCE)

add_subdirectory(${MIMALLOC_DIR})
# 链接override版本而非基础版本
target_link_libraries(${PROJECT_NAME} mimalloc-override)
target_include_directories(${PROJECT_NAME} PRIVATE "${MIMALLOC_DIR}/include")

关键说明:

  • 开启MI_OVERRIDE后,mimalloc会自动构建mimalloc-override.dll,此时必须链接mimalloc-override目标,而非基础的mimalloc。
  • 移除MI_WIN_REDIRECT,该选项是手动重定向场景使用的,override模式下会由mimalloc内部自动处理。
  • 统一运行时输出目录,可避免后续手动复制DLL的麻烦。

2. 解决运行时DLL缺失错误(0xC0000135)

上述CMake配置中已通过CMAKE_RUNTIME_OUTPUT_DIRECTORY将可执行文件和DLL统一输出到bin目录,生成项目后直接运行该目录下的程序即可。如果仍出现错误,可手动将生成的mimalloc-override.dll复制到可执行文件所在目录。

3. 验证override是否生效

修改main.cpp,验证mimalloc是否成功覆盖默认分配器:

#include <iostream>
#include <cstdlib>
#include "mimalloc.h"

int main()
{
    const char* version = mi_version();
    std::cout << "mimalloc version: " << version << "\n";

    void* ptr = malloc(1024);
    if (ptr != nullptr) {
        // 返回1说明内存由mimalloc分配,override生效
        std::cout << "malloc uses mimalloc: " << mi_is_internally_allocated(ptr) << "\n";
        free(ptr);
    }

    std::cout << "hi\n";
    return 0;
}

常见问题排查

  • 若仍未生成mimalloc-override.dll,检查mimalloc版本是否为最新,旧版本可能存在配置兼容问题。
  • 查看CMake配置日志,确认MI_OVERRIDE确实被设置为ON,避免配置未被正确读取。
  • 确保Visual Studio的平台(x86/x64)与mimalloc编译平台一致,平台不匹配会导致DLL无法加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:37:02