使用Turbo C编译Sample2.c文件

时间:2019-01-25 09:19:50

标签: c

编译c文件tcc Sample2.c时出现错误。错误是:

Fatal crtdefs.h 40: Error directive: ERROR: Only Win32 target supported!

我尝试编译Sample2.c文件。我试图运行Sample2.c文件。该文件使用JNI访问Java方法。

  #include "jni.h"

  #ifdef _WIN32
  #define PATH_SEPARATOR ';'
  #else
  #define PATH_SEPARATOR ':'
  #endif

  int main() {
  JavaVMOption options[1];
 JNIEnv *env;
 JavaVM *jvm;
 JavaVMInitArgs vm_args;
 long status;
 jclass cls;
 jmethodID mid;
 jint square;
 jboolean not;

 options[0].optionString = "-Djava.class.path=.";
  memset(&vm_args, 0, sizeof(vm_args));
  vm_args.version = JNI_VERSION_1_2;
  vm_args.nOptions = 1;
  vm_args.options = options;
  status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);

  if(status != JNI_ERR) {
  cls = (*env)->FindClass(env, "Sample2");

  if(cls != 0) {
     mid = (*env)->GetStaticMethodID(env, cls, "intMethod", "(I)I");

     if(mid != 0) {
        square = (*env)->CallStaticIntMethod(env, cls, mid, 5);
        printf("Result of intMethod: %d\n", square);
     }

     mid = (*env)->GetStaticMethodID(env, cls, "booleanMethod", "(Z)Z");

     if(mid != 0) {
        not = (*env)->CallStaticBooleanMethod(env, cls, mid, 1);
        printf("Result of booleanMethod: %d\n", not);
     }
  }

  (*jvm)->DestroyJavaVM(jvm);
  return 0;
}
else 
  return -1;
}

0 个答案:

没有答案