Error: ld returned 1 exit status при компиляции приложения - C (СИ)

Узнай цену своей работы

Формулировка задачи:

c:/program files/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../libmingw32.a(main.o):main.c.text.startup+0xa7): undefined reference to `WinMain@16' collect2.exe: error: ld returned 1 exit status вот такая картинка в консоли когда пытаюсс скомпилировать файл(.с).. подскажите в чем проблема.. заранее спс..

Решение задачи: «Error: ld returned 1 exit status при компиляции приложения»

textual
Листинг программы
#include <d:\java\classes\superclass\jdk1.7.0_40\include\jni.h>
#include "d:\java\classes\superclass\superclass3\headers+C\superclass3_Nativedemo.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_superclass3_Nativedemo_test(JNIEnv *env, jobject obj)
{
 jclass cls;
 jfieldID fid;
 jint i;
 
 printf("Запуск машинно-зависимого метода.\n");
 cls=(*env)->GetObjectClass(env, obj); 
 fid=(*env)->GetFieldID(env, cls, "I", "I"); 
 
 if(fid==0) {
  printf("Невозможно получить поле id.\n");
  return;
  }
 i=(*env)->GetIntField(env, obj, fid); 
 printf("i=%d\n", i);
 (*env)->SetIntField(env, obj, fid, 2*i); 
 printf("завершение машинно-зависимого метода.\n");
}

Объяснение кода листинга программы

  1. #include <d:\java\classes\superclass\jdk1.7.0_40\include\jni.h> Этот фрагмент кода включает в себя заголовочный файл jni.h, который содержит определения и прототипы функций, используемых при взаимодействии между Java и нативным кодом.
  2. #include d:\java\classes\superclass\superclass3\headers+C\superclass3_Nativedemo.h Этот фрагмент кода включает в себя заголовочный файл superclass3_Nativedemo.h, который, вероятно, содержит определения и прототипы функций, специфичных для данного приложения.
  3. #include Этот фрагмент кода включает в себя библиотеку iostream, которая позволяет выводить данные на консоль.
  4. *JNIEXPORT void JNICALL Java_superclass3_Nativedemo_test(JNIEnv env, jobject obj)* Это функция, которая будет вызываться из Java-кода. Она принимает два аргумента: JNIEnv env, который является указателем на среду вызова JNI, и jobject obj, который является объектом Java, связанным с нативным кодом.
  5. *cls=(env)->GetObjectClass(env, obj);** Этот фрагмент кода получает класс объекта Java, связанного с нативным кодом. GetObjectClass - это функция JNI, которая возвращает класс объекта Java.
  6. *fid=(env)->GetFieldID(env, cls, I, I);** Этот фрагмент кода получает идентификатор поля в классе Java. GetFieldID - это функция JNI, которая возвращает идентификатор поля в классе Java.
  7. if(fid==0) { Это проверка, не равен ли идентификатор поля нулю. Если это так, то поле не было найдено, и код переходит к следующему шагу.
  8. printf(Невозможно получить поле id.\n); Если идентификатор поля равен нулю, выводится сообщение об ошибке.
  9. return; Если идентификатор поля равен нулю, функция завершается.
  10. *i=(env)->GetIntField(env, obj, fid);** Этот фрагмент кода получает значение поля в объекте Java. GetIntField - это функция JNI, которая возвращает значение целочисленного поля в объекте Java.
  11. printf(i=%d\n, i); Выводится значение поля.
  12. (env)->SetIntField(env, obj, fid, 2i); Этот фрагмент кода устанавливает значение поля в объекте Java. SetIntField - это функция JNI, которая устанавливает значение целочисленного поля в объекте Java.
  13. printf(завершение машинно-зависимого метода.\n); Выводится сообщение о завершении метода. Обратите внимание, что некоторые из этих шагов могут не выполняться, если определенное поле или метод не существуют в соответствующем классе Java.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.538 из 5