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