Qt中,怎么链接写好的C++功能实现

比如我写好了一个计算器界面,然后用C++写好逆波兰算法实现计算功能,那么怎样把界面和功能实现整到一起呢... 比如我写好了一个计算器界面,然后用C++写好逆波兰算法实现计算功能,那么怎样把界面和功能实现整到一起呢 展开
 我来答
ljt20061908
推荐于2016-08-20 · TA获得超过1033个赞
知道小有建树答主
回答量:527
采纳率:87%
帮助的人:215万
展开全部

你斟酌着看:

  1. 如果的计算功能是以一个文件写好了,A.cpp吧!在你的Qt工程中添加文件A.cpp,在用到此cpp中算法的任何.cpp文件中,用到那个函数就在文件的前面声明此函数,接下来就直接调用函数,链接的时候会自己链接到指定的函数的。(全局函数的方法)

  2. 你的界面肯定有界面类,在此类中添加成员函数,将你的算法当成成员函数封装进来,如果你算法复杂,此方法有点麻烦,不难。(成员函数的方法)

  3. 将你的这些算法函数全部导出为动态库,在用到算法的地方导入要用到的动态库就行了,此方法一劳永逸,而且显示你水平。(动态库方法)

  4. 应该还有其他的,水平有限,暂时就这么多了。

追问
第三种好,请问要怎么做呢
追答

你先百度一下C++动态库的创建与使用,这不是我在这里三言两语就能让你会的。

这是我用vc6.0做的demo,你再对照这看的理解与实践,希望你有所收获。

另外一种调用:

1)定义函数指针类型
    2)加载动态库(使动态库程序运行)
       HMODULE LoadLibrary(
    LPCTSTR lpFileName  
    // 动态库的名称或全路径
  );//返回动态库的实例句柄(HINSTANCE)。
如果dll文件与.exe文件在同一路径下,只需要写动态库名称,不在同一路径下,则需写带盘符的全路径
    3)获取函数地址
       FARPROC GetProcAddress(
    HMODULE hModule,   
    // 动态库实例句柄
    LPCSTR lpProcName  
    // 函数名称
  );//执行成功,返回函数地址。
    4)使用函数
    5)卸载动态库
       BOOL FreeLibrary(
    HMODULE hLibModule  
    // 动态库实例句柄
  );

例子:假设你想调int call1 ( int *response )

  1. typedef int (*DLL_CALL)(int* );//这是将函数指针类型定义出来,在头文件中的类声明前加上

    2.在你调用LoadLibrary后会返回一个句柄hDll,想调用函数的时候

    DLL_CALL myCall1 = (DLL_CALL) GetProcAddress( hDll, "call1" );
    myCall1(/*内面填写你要传的参数*/);

    现在就将call1函数调用了。
    3.FreeLibrary(hDll);

     

配合网上的详细讲解,一步步实践,这是很重要的一个知识点,我可能讲的不是那么好,毕竟我不专业。

 

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-22
展开全部
QT中,怎么链接写好的C++功能实现,需要考虑下。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式