Java SE-1.6を使用してSuse Linux 11にJavaプログラムを作成していますが、javacを使用してビルドに問題があります。LinuxでJavaコードからC関数を呼び出すには
私は
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html
と、これまでに以下のことを書かれているのチュートリアル以下午前:
package com.ctest;
class CTest
{
// Native method declaration
native int testCall();
// Load the library
static
{
System.loadLibrary("fpdpReaderLib");
}
public static void main(String args[])
{
int retVal;
// Create class instance
CTest cLangTest = new CTest();
// Call native method
retVal = cLangTest.testCall();
System.out.println(retVal);
}
}
私はのjavac CTest.javaを実行すると、私はエラーを取得:
/usr/lib/gcc/i586-suse-linux/4.3/../../../crt1.o: in function '_start':
/usr/src/packages/BUILD/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to 'main'
/tmp/cc97kcJu.o:(.data+0x28) undefined reference to 'hidden alias for int com::ctest::CTest::testCall()'
/tmp/cc97kcJu.o:(.data+0x74) undefined reference to 'hidden alias for int com::ctest::CTest::testCall()'
collect2: ld returned 1 exit status
を
私は、Java版ではなくgccを使用していると思われますjavacですが、わかりません。
どのような問題が発生する可能性がありますか?
私はここに述べた "--main =" オプションを使用しようとしている:私は今ちょうど入る前に
http://gcc.gnu.org/java/faq.html#4_1
ではなく、エラーのを:
/tmp/ccwfugWq.o:(.data+0x28) undefined reference to 'hidden alias for int com::ctest::CTest::testCall()'
/tmp/ccwfugWq.o:(.data+0x74) undefined reference to 'hidden alias for int com::ctest::CTest::testCall()'
collect2: ld returned 1 exit status
ありがとうございました。私のJDKが台無しになってしまったので、再インストールしました。パスが修正され、問題なくjavacを実行でき、javahが正しくヘッダファイルを作成しました。 –