我正在编写一个QT应用程序,我希望编译后的二进制文件能够与图形用户界面和命令行界面(没有安装X11)环境兼容。
下面是我使用QApplication或QCoreApplication的主函数:
int main(int argc, char *argv[]){
// SOME COMMON CODE will be executed before this
bool myGUI = getenv("DISPLAY") != 0;
if(myGUI){
QApplication a(argc, argv);
client w; // A MainWindow Object
w.show();
doStuff();
return a.exec();
}else{
QCoreApplication a(argc, argv);
doStuff();
return a.exec();
}
return 1;
}现在,QT构建将libQtGui作为动态共享对象的二进制文件。我想知道是否有可能动态加载libQtGui,这样它就可以在CLI环境中工作,而不必安装libQtGui所需的所有库。
发布于 2013-07-26 18:31:34
这不是关于Qt的问题,而是关于c++的问题
你可以在这里找到答案Dynamically load a function from a DLL
但基本上我认为这不是一个好主意,如果你想要一个纯控制台应用程序或混合控制台/gui应用程序,你应该在编译时使用#ifdef来解决它。
#ifdef WITH_GUI
if(myGUI){
QApplication a(argc, argv);
client w; // A MainWindow Object
w.show();
doStuff();
return a.exec();
}else{
#endif
QCoreApplication a(argc, argv);
doStuff();
return a.exec();
#ifdef WITH_GUI
}
#endif并添加一些启动参数。例如,./myapp --start-gui用于支持gui编译的版本。
https://stackoverflow.com/questions/17878779
复制相似问题