Qt GUI 라이브러리를 VST 플러그인의 사용자 인터페이스로 사용하고 싶습니다. VST 플러그인은 Windows의 DLL입니다. 호스트 응용 프로그램은 openGUI()
을 포함하여 DLL의 다양한 함수를 호출합니다.DLL (QST 플러그인)의 Qt GUI 환경
DLL에서 Qt GUI를 사용하는 방법을 알고 싶습니다. 가능한 옵션을 조사하기 위해 일부 조사를했지만 한계에 대해 완전히 확신하지 못했습니다.
가장 큰 문제는 QApplication
개체를 만들고 여기에 exec()
(응용 프로그램을 종료 할 때까지 반환되지 않는 함수)을 호출하는 위치입니다.
this post에 제공된 솔루션을 살펴 보았지만 추가 읽기 후에는 Mac OS X에서이 솔루션이 작동하지 않는 것으로 나타났습니다. 코코아는 GUI를 실행할 수있는 특정 스레드에 대해 더 제한적입니다. 정말로 약간의 해킹입니다.
나는 또한 this solution을 보았지만, 더 이상 Qt 라이브러리의 일부로 보이지 않는 QMfcApp
과 QWinWindow
에 의존합니다.
내 DLL이 새 응용 프로그램 자체를 생성하는 유일한 방법입니까? 아마도 QProcess
에 대한 호출로 하나를 시작하고 GUI 응용 프로그램과 내 VST DLL간에 공유하기 위해 공유 메모리를 사용할 수 있습니까? 누구든지 이런 유형의 문제에 직면 해 있습니까? 나는 이것으로 나쁜 길을 가나, 아직 내가 생각하지 못했던 것이 있는가?
업데이트
추가 연구 후에 나는 QAbstractEventDispatcher
클래스 건너왔다. 나는 QApplication::exec()
을 호출하는 대신 자신의 (내 플러그인 호스트) 이벤트 루프에서 QApplication::processEvents()
을 호출하는 것이 가능하다고 말하는 것 같습니다. this post을 보았습니다. 누구든지이 일을 시도 했습니까?
나는 창문 (별도의 스레드가있는 첫 번째 솔루션)에서이 작업을 수행했습니다. 금지 된 dllmain에서 별도의 스레드를 실행해야하기 때문에 정말 어려웠습니다. QMfcApp는 Qt에 포함 된 적이 없으며 "솔루션"이라고 불립니다. 여기 http://qt.gitorious.org/qt-solutions/qt-solutions/trees/master/qtwinmigrate에서 찾으십시오. 행운을 빕니다! –