2009-02-05 8 views
0

일부 함수 정의로 확장하려는 프로그램을 작성 중입니다. 프로그램을 컴파일하는 방법 중 하나는 코드를 주 코드에 연결하는 단일 실행 파일을 만드는 것입니다. 문제는 정의 할 함수 중 하나가 선택 사항이며이를 테스트해야한다는 것입니다. 리눅스에 런타임에 프로그램에 함수가 있는지 확인하십시오.

, 여기에 내가 뭐하는 거지입니다 :

는 "-rdynamic"옵션을 사용하여 프로그램을 컴파일 LD에 g ++ 또는 "--export 동적"옵션. 그런 다음, 다음과 같이 ldsym 사용

fct_type myfct = (fct_type)dlsym(RTLD_DEFAULT, "fct"); 

를 함수가 "FCT는"프로그램에있는 경우,이, 그렇지 않으면 NULL 반환의 주소를 반환합니다.

dll_handle = GetModuleHandle(0); 
fct_type myfct = (fct_type)GetProcAddress(dll_handle, "fct"); 

을하지만 아무도 "-rdynamic"또는 "--export 동적"옵션이 없습니다 g ++ MinGW32에에 :

는 이제 Windows에서, 나는 그렇게 할 수 있어야하고! 그래서 이것은 효과가 없습니다. MinGW32를 사용하여 Windows에서 무엇을해야할지 모르는 사람이 있습니까?

답변

1

좋아, 그래서 결국, 나는 내 자신의 질문에 대답합니다 ...

당신은 플래그 -Wl,--export-all-symbols와 연결해야하며 ...

작동