不用头文件,能否调用dll中的导出类?(每个编程人员都可能想到的问题)

问题由来:头文件改动后,包含了该文件的所有cpp都要重新编译,非常耗时。(即使是多敲了个空格,也要重编所有,不觉得这非常不科学吗?)于是我想把那个类的头文件和cpp文件都... 问题由来:
头文件改动后,包含了该文件的所有cpp都要重新编译,非常耗时。(即使是多敲了个空格,也要重编所有,不觉得这非常不科学吗?)
于是我想把那个类的头文件和cpp文件都分离到dll工程中,试图另建一个工程来显式调用dll中的这个类。
我只听说过“不用头文件可以显式调用dll中的导出函数”,还没听过“不用头文件能调用类”。
您觉得这现实吗?如果能实现,能省下很多编译时间。 Windows 操作系统中这么多dll供各编译工具调用,但微软也没提供头文件啊。 希望和大家一起探讨下。
展开
 我来答
gis19831203
2012-05-10 · TA获得超过690个赞
知道小有建树答主
回答量:914
采纳率:0%
帮助的人:839万
展开全部
这个好像不行啊,最少你需要知道类或函数的声明啊。
无论dll中导出函数或是类。
也无论你是使用隐式调用或是显示调用dll中的函数,你都需要先知道函数声明,否则一切都是无用的。只不过是函数声明由dll工程移到了调用这个dll的工程。
你说对不对。

如果要显示调用dll中导出的类,可以通过如下方法实现。
DLL中:
class A//此类不用导出。
{
...
};
A* create_instance()//应该定义为导出函数。

return new A();


//调用DLL的工程
A* (*ptrAInst)();
loadlibrary(...);//具体函数参见不同操作系统的编程手册
ptrAInst = getprocaddress(“create_instance”);//具体函数参见不同操作系统的编程手册
...//处理某些工作
freelibrary(...);//工作处理完后释放,具体函数参见不同操作系统的编程手册
追问
谢谢热心回答!
我想,如果没有头文件的话也确实很难在新工程中实例化这个类。

但有什么好方法能尽量减少因头文件改动而导致的大量重新编译呢?
我试过在Qt Creator中把一些头文件设置成预编译的,但好像工程编译时间一点都没减。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式