0

基本上我想做的是以下几点:

我有一个Core.cpp加载共享库(SDL 库、Ncurses 库和 Qt 库)...

这是main

  int main(int argc, char **argv, char **env)
  {
     Core                  *core;
     LibGestionnary        gestionnary;
     IDisplay              *display;
     display = gestionnary.loadLibFromName(std::string(argv[3]));
     display->Boucle(core);
  }

这是 DisplaySDL、DisplayNcurses 和 DisplayQT 继承的接口:

#ifndef IDISPLAY_HH__
# define IDISPLAY_HH__

#include "../Core/Core.hh"

class IDisplay
{
public:
  virtual ~IDisplay() { }
  // virtual void dispSnake(Snake snake) = 0;                                   
  // virtual void dispBlock(Block block) = 0;                                   
  // virtual void dispMap(Map map) = 0;                                         
  virtual void Boucle(Core *core) = 0;
  virtual void displayEnd(Core *core) = 0;
};

#endif

我可以轻松加载我的libsdl.soand libndk.so,并且一切正常。问题是,Qt 需要argc并且argv为了创建QApplication.

我怎么能做到这一点,知道我无权访问argvargc在我的共享库中?

4

1 回答 1

0

QApplication需要argcargv寻找特定于 Qt 的选项,并确定应用程序路径。如果您不想从真实命令行解析这些选项,您可以构建自己的argcargv传递给QApplication构造函数。

于 2013-03-23T16:57:50.947 回答