문제

Snow Leopard에서 G ++ 명령을 사용하여 JVMTI 에이전트를 구축하려고 노력하고 있으며 다음과 같은 오류가 발생합니다.

$ g++ -o agent.so -I `/usr/libexec/java_home`/include agent.cpp

정의되지 않은 기호 : "_Main", 참조 : CRT1.10.6.O LD에서 시작 : 기호를 찾지 못함 Collect2 : LD 1 종료 상태 1 종료 상태

GCC 및 C ++ 프로그래밍에 관해서는 총 초보자이므로 오류가 무엇을 의미하는지 전혀 모릅니다. 에이전트 자체는 매우 기본적입니다.

      #include 
      #include 

      JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved)
      {
          std::cout <<"Loading aspect..." <<std::endl;
          return JNI_OK;
      }

메시지에 대한 도움은 크게 감사하겠습니다.

도움이 되었습니까?

해결책

G ++에 제공 한 명령 줄 옵션은 공유 라이브러리가 아닌 실행 파일을 구축하려고한다고 말합니다. G ++는 귀하가 정의하지 않았다고 불평합니다 main 모든 실행 파일에는 하나가 필요하므로 기능합니다.

G ++가 라이브러리를 빌드하고 코드를 컴파일하고 조립하는 것을 알고 있도록 -C 플래그로 공유 라이브러리를 컴파일하십시오. 그러나 실행 파일에 연결하려고 시도하지 마십시오.

g++ -c -o agent.so -I `/usr/libexec/java_home`/include agent.cpp
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top