java - 使用 JNI 时如何修复“不是有效的 win32 应用程序”
问题描述
我正在尝试使用在 Java 中使用 Qt 组件(与 gui 无关)编写的 C++ 代码。但是,当我将它导出到 dll 并从 java 调用它时,我得到“不是有效的 win32 应用程序”错误。
我在 QtCreator 上编译 C++ 端,因为它具有 Qt 依赖项。
然后我将生成的 dll 放在 java 的库路径之一中(现在是 System32,用于测试)
然后,我将用于创建本机代码的 java 代码放入 .jar 文件中,并将其包含在另一个项目中。
我想调用该项目中的函数。
这是我的 Qt .pro 文件的竞赛
QT += widgets network
QT -= gui
TARGET = JNIOpenSdkWrapper
TEMPLATE = lib
CONFIG += create_prl
DEFINES += JNIOPENSDKWRAPPER_LIBRARY
DEFINES += QT_DEPRECATED_WARNINGS
#... headers and source files here ...
INCLUDEPATH += "C:/Program Files/Java/jdk1.8.0_211/include"
INCLUDEPATH += "C:/Program Files/Java/jdk1.8.0_211/include/win32"
unix{
target.path = /usr/lib
INSTALLS += target
}
当我运行该项目时,我得到 UnsatisfiedLinkError 说“%1 不是有效的 Win32 应用程序”。
编辑:我正在使用 MinGW 64 位编译器和 java 1.8
解决方案
推荐阅读
- javascript - Chrome 开发工具不显示通过扩展内容脚本添加的事件侦听器
- visual-studio-code - vscode的Python黑色格式化程序不格式化
- bash - 测试 JSON 列表是否为空,并对结果进行 bash if 语句分支
- apache-spark - 如何安全地删除不属于架构的列?
- angularjs - 为什么 Angular 中没有显示表单验证错误?
- javascript - 在 css javascript 中创建切换按钮
- ruby - 我不知道如何解决这个问题
- python - 正则表达式 - 检查字符串中是否存在模式
- node.js - 检索存在于语音通道中的成员
- c# - 从 WebBrowser 获取完整的 cookie 列表