• 5031阅读
  • 6回复

[提问]主程序添加自定义插件后,编译时找不到插件的定义 [复制链接]

上一主题 下一主题
离线clearsky
 

只看楼主 倒序阅读 楼主  发表于: 2014-04-02
求助
   主程序添加自定义插件后,编译时找不到插件的定义。
已经完成了一个自定义插件,通过designer插入到主程序的界面上 。
但是在主程序编译时, 报错,不识别所定义的插件的类型。
如何处置?主程序的问题还是插件的问题?
谢谢。
渴望  晴朗的天空
离线dbzhang800

只看该作者 1楼 发表于: 2014-04-02
问题:你误解了designer插件的用途。

那个插件只是designer的插件,和你的程序没有任何关系。

比如:你设计了一个类A (a.h/a.cpp),这个类源码你可以直接用在你的程序中,也可以将其做成动态库或静态库A.dll/A.lib,链接到你的程序中。

但是呢,你想在designer中能看到它,且可以拖动到界面中。于是你创建了一个插件 a_plugin.h/a_plugin.cpp ==> A_plugin.dll,该插件依赖于你前面设计的类A。

使用插件后,你该干嘛还是干嘛。无论是直接将A的源码用于程序中,还是链接其生成的库A.dll
离线clearsky

只看该作者 2楼 发表于: 2014-04-02
  是这样的,a_plugin.h中包含了a.h;
      a.h中定义了一个类A。
     在系统生成的UI定义文件时,会引用控件类的定义,譬如 A * aa;
     现在的问题时,编译这个文件时,报错,找不到 类A的 定义。明明已经包含头文件了。
渴望  晴朗的天空
离线dbzhang800

只看该作者 3楼 发表于: 2014-04-02
回 clearsky 的帖子
clearsky:
  是这样的,a_plugin.h中包含了a.h;
      a.h中定义了一个类A。
     在系统生成的UI定义文件时,会引用控件类的定义,譬如 A * aa;
     现在的问题时,编译这个文件时,报错,找不到 类A的 定义。明明已经包含头文件了。

我明白你的意思。知道你想表达什么

你只需要搞清楚一个问题,编写了一个类A(a.h/a.cpp),如何用到的你当前程序中。

这个问题的答案就是你现在要找的答案。

离线clearsky

只看该作者 4楼 发表于: 2014-04-02
   感谢关注。  是这个意思。
    当通过designer在主程序B中的UI中添加了这个控件;
   那么在系统自动生成的文件UI_B.h 中,有  #include  a.h"  并且在UI_B的类定义中有
   A * aa(); 这样的引用。
    在编译时,报,A  标识符错误。
     明明在 a。h中定义了类A。
   电脑中装了4.8.1 和4.8.5 ,不知道是否与版本有关。谢谢。
  
渴望  晴朗的天空
离线XChinux

只看该作者 5楼 发表于: 2014-04-02
把你插件所在的目录添加到.pro的INCLUDEPATH中去。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线clearsky

只看该作者 6楼 发表于: 2014-04-03
不好意思的低级错误,问题查到了,插件在拖到UI上时,采用的是自动命名,结果插件名称和插接类的名称一样了,导致了编译错误。更改插件的变量名后,就通过了。
渴望  晴朗的天空
快速回复
限100 字节
 
上一个 下一个