3

JNI で既に生成されているヘッダー ファイルを参照して、次の C コードを実装しています。

#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL 
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
     printf("Hello World!\n");
     return;
}

次を使用して(soライブラリを生成するために)コンパイルしようとすると:

cc -g -I/usr/lib/jvm/java-7-openjdk/include
-I/usr/lib/jvm/java-7-openjdk/include/linux HelloWorld.c -o libHelloWorld.so

このエラーが発生しました:

/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

この問題を解決するにはどうすればよいですか?

4

4 に答える 4

3

-sharedリンカー オプションを追加する必要があります

最初にオブジェクト ファイルを作成します。

cc -c HelloWorld.c

次に、そうを作成します

cc -shared -o libHelloWorld.so HelloWorld.o
于 2013-04-05T08:36:00.737 に答える
-1

-shared フラグを挿入する

gcc -I/usr/lib/jvm/default-java/include -I/usr/lib/jvm/default-java/include/linux -o libmyhello.so -shared HelloWorld.c
于 2018-05-01T12:29:16.200 に答える