[완료] 라이브러리가 main 쪽의 함수를 사용할 수 있나요?
글쓴이: nekoko / 작성시간: 목, 2011/07/14 - 1:34오후
질문이 좀 그런데..
지금 프로젝트의 구성이 이렇습니다:
int main(int argc, char *argv[]) { startMainApplication(); QApplication a(argc, argv); uimain Uimainwindow; Uimainwindow.show(); return a.exec(); }
보시다시피 QT를 사용하는 main함수는 cpp프로젝트로 되어있고요,
startMainApplication() 함수는 c프로젝트로부터 컴파일된 공유라이브러리에서
호출합니다.
현재 main(cpp프로젝트)에서 라이브러리쪽(c프로젝트)의 함수는 호출이 잘 됩니다만
c프로젝트에서 main쪽 함수들을 사용하고 싶은데 안되네요. 당연한 건지..
c프로젝트 쪽에서 QT함수들을 사용하고 싶어서 그런데요.. qt는 cpp인데.. c프로젝트 내에서
QT함수를 바로 사용할 순 없을텐데..
뭔가 헷갈립니다. 질문 내용을 이해하셨다면 조언을 부탁드리겠습니다.
Forums:
잘 이해는 안되지만 cpp가 main이고 라이브러리가
잘 이해는 안되지만 cpp가 main이고 라이브러리가 c인이라면
c에서 cpp 함수를 호출하고 싶으시단 말인가요? 이게 맞다면 안되는게 정상이지 않을까요?
ㅇㅇ
그렇죠..?;; 당연한 질문을 했나보네요...ㅜ
"I'm convinced that the only thing that kept me going was that I loved what I did." - Steve Jobs 1955-2011
cpp 쪽에서 extern "C" { } 를 이용해서
cpp 쪽에서 extern "C" { } 를 이용해서 export 한 함수는 C 쪽에서 사용이 가능합니다. ( name mangling & calling convention 을 맞춘다는 이야기. )
Neogeo - Future is Now.
오옷
잘 됩니다! 으아~~~
일단 호출은 확인했는데 원하는게 되는진 더 확인해봐야겠습니다.
감사합니다!
"I'm convinced that the only thing that kept me going was that I loved what I did." - Steve Jobs 1955-2011
호출 규약만 맞춰주면 언어에 상관없이 함수 호출은 할
호출 규약만 맞춰주면 언어에 상관없이 함수 호출은 할 수 있습니다.
하지만 라이브러리는 철저히 수동적이고 일반적이어야 합니다.
라이브러리에서 응용 프로그램의 코드를 호출해야 한다면 프로그램 설계가 잘못되진 않았는지 다시 생각해봐야합니다.
ㅇㅇ
기존 프로젝트에 추가로 넣다보니..ㅋ
참고하겠습니다.
"I'm convinced that the only thing that kept me going was that I loved what I did." - Steve Jobs 1955-2011
main쪽 함수를 사용한다는게 함수포인터를 함수인자로
main쪽 함수를 사용한다는게
함수포인터를 함수인자로 받는걸 말하는 것이겠죠? ^^
댓글 달기