我有一个处理图像处理的C ++应用程序(通过OpenCV 2.4.10)。当我从命令行或从另一个本地Java应用程序调用此程序时,使用以下代码片段:
ProcessBuilder pb = new ProcessBuilder(_IMG_PROC_ENGINE_PATH, imgPath);
pb.redirectError();
Process p = pb.start();
exitCode = p.waitFor();
一切正常,CPP应用程序返回正确的结果。
但是当我使用来自 Java Tomcat Servlet 的完全相同的用户帐户在同一台PC上调用相同的CPP程序时,我收到错误返回码来自CPP的 -1073741515 。经过一些搜索,我发现当外部库加载出现问题时会发生此代码错误。如果我从C ++程序中删除OpenCV库的用法,那一切都没问题。
我的问题是为什么当我从命令行或其他本地Java应用程序本地执行程序时,一切正常,但是当我从 Java Servlet 调用相同的C ++ EXE时,我收到库加载错误。
如何解决问题?
P.S。 PC上没有防病毒软件或任何其他安全软件(例如Internet Security,EMET等),这可能会中断该过程。
答案 0 :(得分:1)
我认为在Tomcat Servlet中运行时环境变量有些不同。这可以解释为什么你的程序无法加载运行时库。
我会尝试将必要的OpenCV运行时库文件复制到与C ++可执行文件相同的目录中。