프로그램/QT

QT의 Loadlibrary 사용 방법

곰탱이! 2011. 7. 15. 16:07

처음으로 QT를 시작을 했는데....


한것이 하필이면 DRM 이다. ㅎㄷㄷ


예전에 한 경험으로 LoadLibrary 로 debug 모드에서 정상적으로 동작을 했다.


하지만 release 에서 post-event 때문에 죽는 현상이 있었는데


그 부분이 Loadlibrary 였다.


내 자리 말고 다 되는데.... 왜 내자리만 안되는 걸까라는 생각이 들었다.


QT 에서 라이브러리 로드 하는 방법을 찾다보니 아래와 같이 하면 


안되던 내자리도 되더라~~~


완전 감동 ㅠㅠ


------------------------------------------------------------------------------

typedef char * (*rProt)(void);
int main(int, char **)
{
        rProt rfunc;
        QLibrary *lib = NULL;
        while (1) {
                lib = new QLibrary("./test.so");
                rProt rfunc = (rProt)lib->resolve("register_search");
                if (rfunc) 
                        printf("called : %s\n", (*rfunc)());
                else 
                        printf("error loading lib\n");
                lib->unload();
        }
}
LIBRARY FUNCTION
----------------
#include <stdlib.h>
char * register_search()
{
        char *name = (char*)malloc(16);
        strcpy(name, "called test library");
        return name;
}
------------------------------------------------------------------------------
역시 구글링은 짱인 듯 싶다.
이걸로 삽질을 한 시간이 어후~~~~~

출처
http://lists.trolltech.com/qt-interest/2003-02/msg00633.html