C++ DLL 不能在不同的机器上运行

标签 c++ visual-c++ java-native-interface

我正在开发一个简单的 c++ 应用程序来生成一个 dll,稍后我在 JNI 中使用它来运行 native api 调用,但问题是 dll 在我用来开发 dll 的机器上运行良好,但在服务器。两台机器都运行 Windows 7。

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
    at java.lang.Thread.run(Unknown Source)

引起:java.lang.UnsatisfiedLinkError:de.deltacontrols.enteliprint.printer。 PrinterService.getStatus(Ljava/lang/String;)I

最佳答案

在机器上它不起作用在dependency walker 中打开您的dll .检查输出是否有错误,您可能正在使用调试版本的 dll,它在带有 visual studio 的机器上运行良好,或者它可能是目标机器上缺少的 c++ 可再发行组件

关于C++ DLL 不能在不同的机器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30864445/

相关文章:

汇编:__p___argv 的返回值

c++ - 迈耶斯单例 : static keyword confusion

java - 推荐一本不错的JNI书

java - 具有多个参数的 JNI 自定义异常

c++ - 比较 std::system_error::code() 和 std::errc::invalid_argument 时出现段错误

c++ - 是否有可能在 C++ 中获取类型别名的名称?

c++ - 警告 C4247 和 C4248 是什么意思?为什么它们从 Visual C++ 2005 中删除?

android - JNI 多个注册调用

c++ - (C++) - 将字符串与从文件中读取的值相关联

c++ - 从文件中读取输入并存储到二维数组中