BITMAPFILEHEADER没有链接?

时间:2013-08-16 15:22:36

标签: java c++ java-native-interface shared-libraries

我使用MinGW编译一个c程序

C:\MinGW64\mingw64\bin\g++ -shared 
     -IC:\Progra~1\Java\jdk1.7.0_10\include 
     -IC:\Progra~1\Java\jdk1.7.0_10\include\win32
   test.h -o test.dll

确定。这段代码编译并运行良好:

JNIEXPORT void JNICALL Java_Bar_doFoo (JNIEnv *env, jobject o){
   printf("hi!");
}

输出为hi!


此代码编译良好,但不会运行。

JNIEXPORT void JNICALL Java_Bar_doFoo (JNIEnv *env, jobject o){
   printf("hi!");
   BITMAPFILEHEADER bmpFileHeader;
}

例外是:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Peter\Documents\workspace\Bar\foo.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at Run.<init>(Run.java:17)
    at Run.<clinit>(Run.java:14)
    at Run.main(Run.java:9)

我想我需要再联系一些。任何的想法?我可以使用LoadLibrary("*.dll")吗?

1 个答案:

答案 0 :(得分:-1)

好的,我明白了。

我必须下载http://www.dependencywalker.com/,而且我需要

  • 的libstdc ++ - 6.dll
  • libgcc_s_seh-1.DLL

在同一目录中。

现在工作正常。