상세 컨텐츠

본문 제목

Linux Windows 동적라이브러리(Dynamin Library) 둘다 혼용가능 설정 - dlsym,GetProcAddress

C, C++

by oksk2003kr 2020. 11. 25. 19:53

본문

반응형


1.  dll,so파일을 둘다 load하기 위해 Instance는 Void 포인터로 선언 

void* m_dll; 




2.  전처리를 이용하여 윈도우와 리눅스를 구분하는 define을 만들거나 이용함

	typedef char*				(*Export_Function)(char *, int);
	Export_Function	Ex_Fun;
	
#ifdef Window 
	m_dll = ::LoadLibrary(dll경로);	
	if (m_dll)
	{
		Ex_Fun = (Export_Function)::GetProcAddress((HINSTANCE)m_dll, "Export_FunctionData");  // 라이브러리에 있는 export 함수명 Export_FunctionData
	}
#else 리눅스	
	m_dll = dlopen(dll경로, RTLD_NOW);
	if (m_dll)
	{
		Ex_Fun = (Export_Function)dlsym(m_dll, "Export_FunctionData");
	}
	
#endif



3. dlopen vs loadlibrary Include 헤더가 다름

#ifndef Window  // 리눅스일때
	#include <dlfcn.h>
#endif 
반응형

관련글 더보기

댓글 영역