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

编译C++生成DLL遇依赖缺失与JNA调用错误的解决求助

问题解决方案

1. 处理ext-ms-win-oobe-query-l1-1-0.dll依赖缺失问题

  • 原因:你代码中包含了<iostream>头文件,即便没实际使用,编译器仍会链接C++标准库的动态版本,间接引入了该系统组件依赖。
  • 解决方法:
    1. 删除代码里的#include <iostream>,你的函数不需要输入输出功能,完全可以移除。
    2. 修改编译命令,静态链接C++标准库与gcc运行库,避免依赖系统动态库:
      g++ -shared -static-libstdc++ -static-libgcc -o Te.dll Te.cpp
      
    3. 无需手动下载缺失的DLL,这是Windows系统组件,强行下载替换可能引发兼容性问题,静态链接即可彻底解决依赖问题。

2. 修复JNA调用的java.lang.UnsatisfiedLinkError: %1 is not a valid Win32 application异常

  • 原因:编译生成的DLL与运行Java程序的JVM位数不匹配(比如32位DLL用64位Java调用,或反之)。
  • 解决方法:
    1. 确认g++是64位版本:执行g++ -v,查看输出的target字段,若包含x86_64-w64-mingw32则为64位。
    2. 确认Java环境是64位:执行java -version,输出中会明确标注64-Bit。
    3. 用64位g++重新编译DLL,再用64位Java运行程序,保证两者位数一致即可解决该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:43:19