2012-12-07 1 views
2

일부 원자로 작업을 수행하기 위해 ACE 라이브러리를 사용하고 있습니다. linux에서 기본 ACE 컴파일 출력은 libACE.so입니다. 나는 보통 -lACE 컴파일 옵션을 사용하여 컴파일하지만, 이는 ld.so.conf.d 디렉토리에 libACE.conf를 설정했는지 여부에 달려있다. 하위 클래스 인 ACE_Task (ACE.so에서 가져올 수 있음)를 컴파일하려면 libACE.so를 사용합니다. ACE.so를 동적으로로드하려면 어떻게해야합니까? dlopen을 사용하면 링크 오류가 발생했습니다. 그래서 ACE.so를 동적으로로드하고 ACE_Task를 이와 같이 구현할 수있는 방법이 있습니까?Linux의 .so에서 C++ 클래스를 서브 처리하는 방법은 무엇입니까?

class test: public ACE_Task<ACE_MT_SYNCH> 
{ 

} 
+0

그럼 라이브러리를'ld.so.conf'로 설정 했습니까? –

+0

ld.so.conf로 구성했는데 컴파일해도 문제가 없지만 다른 PC의 모든 파일을 해제하려면 ld.so.conf를 구성해야합니다. .so 파일 인 클래스를 클래스로 분류하면 런타임에로드 할 수 있습니까? – lovecpp

답변

1

하위 분류는 대부분 컴파일 시간에 발생합니다. 일부 헤더 파일 [s]에 수퍼 클래스 [es]가 적절하게 정의되어 있어야합니다.

런타임시 중요한 것은 vtable 및 상속 된 멤버 함수 (및 RTTI)의 가용성입니다.

libACE.so을 공유 객체 (빌드중인 dlopen -ed 것)에 연결하고 싶을 수도 있습니다. 예 : g++ -rdynamic -shared your*.pic.o -lACE -o yoursharedobject.so

+0

감사합니다, 당신의 대답은 합리적인 것, 그것을 시도합니다 – lovecpp