cl -Ic:\jdk1.1.6\include -Ic:\jdk1.1.6\include\win32 -LD MyNative.c 
      -FeMyNative.dll
这里的cl 是什么程序,我怎么找不到它?

解决方案 »

  1.   

    我说这位兄台~这里是java区啊~区vc+区问啊!
      

  2.   

    cl 是 vc 的编译链接程序。
    参数 -I 指定 include 文件的目录
      

  3.   

    使用DEV C++来编译动态库,可以用它来生成makefile
      

  4.   

    楼主,使用cl -help就可以查阅这些参数的意义了。-I 是编译头文件所在目录;-LD好像是创建dll文件,-Fe好像是创建可执行文件...我也记不清了,你还是自己查吧。
      

  5.   

    如果我没有vc++,我装了Dev-C++,我该怎么办?
    我怎么用Dev-C++来编译dll?
      

  6.   

    use dllwrap.exean example:
    DLLWRAP=dllwrap.exe
    DEFFILE=yourlib.def
    STATICLIB=yourlib.a$(BIN): $(LINKOBJ)
    $(DLLWRAP) --output-def $(DEFFILE) --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)
      

  7.   

    看不懂,讲得具体些!
    能不能再解决详细些!$(BIN): $(LINKOBJ)
    $(DLLWRAP) --output-def $(DEFFILE) --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)$是什么? $(BIN):是什么? $(LIBS)是什么? 到底怎么弄啊?
      

  8.   

    这是makefile里的形式,分别定义的一些宏变量,BIN就是你的动态库名称,用$表示变量替换。我想你装了dev c++,可以用它的集成环境来编译,然后可以去你的project目录下看看makefile.win就明白了。其实你也可以直接使用dllwrap 在命令行下编译,用dllwrap --help 可以看到具体参数。
    dllwrap --output-def  yourdeffile your.o your.lib -o yourdllGood luck.
      

  9.   

    to xbin999(xbin) :我是第一次编译dll,所以我不知道怎么下手。你能给我一个简单的写好的例子吗?(是为jni编译dll而不是为c++编译哦)dllwrap --output-def  yourdeffile your.o your.lib -o yourdll
      

  10.   

    I had send an example to u.
      

  11.   

    我看了你的程序,我想你在project options-parameters-
    Compiler 增加以下参数:-DBUILDING_DLL=1
    Linker 增加以下参数:--no-export-all-symbols --add-stdcall-alias
    重新编译一下就可以了。
    或者在你的makefile.win 中直接修改LIBS为:
    LIBS =  -L"E:/application/Dev-Cpp/lib"  --add-stdcall-alias --no-export-all-symbols
      

  12.   

    //编成动态文件MyNativeDll.dll
    public class MyNative{
      static{
        System.loadLibrary( "MyNativeDll" );
      }
      private native void showParmsJni( String s, int i, boolean b );
      public void showParms( String s, int i, boolean b ){
        showParmsJni( s, i , b );
      }  
    }
    //测试程序
    import java.awt.event.*;
    public class JniTest{
      public static void main( String[] args )throws Exception{
         MyNative obj = new MyNative();
         obj.showParms( "Hello", 23, true );
         obj.showParms( "World", 34, false );
       }
    }//compile.bat   编译测试程序
    javac JniTest.java -d .
    pause//run.bat
    java -classpath . JniTest
    pause我的所有文件都在一个目录中!
    现在我也能生成一个DLL文件,但是,我运行不也它,主要是无法使用这个DLL。出现异常如下:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: showParms0
            at MyNative.showParms0(Native Method)
            at MyNative.showParms(MyNative.java:3)
            at JniTest.main(JniTest.java:5)我的所有文件都在同个目录中,我也不知道为什么不行,大哥请指点一下吧!
    谢谢。
      

  13.   

    我已经给分了,它怎么不显示。xbin999(xbin)<---70